<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4476252660045845987</id><updated>2012-02-16T19:54:04.250-08:00</updated><title type='text'>ITology</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-2848589346353320862</id><published>2011-09-06T06:20:00.000-07:00</published><updated>2011-09-06T06:20:20.610-07:00</updated><title type='text'>GNU Gettext library</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;b&gt;gettext&lt;/b&gt; is a l10n and i18n library&lt;br /&gt;&lt;br /&gt;1. The texts inside source code should be wrapped by gettext function&lt;br /&gt;&lt;br /&gt;So the text "My Name is..." becomes _("My Name is...")&lt;br /&gt;&lt;br /&gt;2. Then xgettext runs on source code to generate &lt;b&gt;.pot&lt;/b&gt; file, which contains the a list of all translatable strings. Translator edits .po files.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: #38761d;"&gt;msginit --locale=fr --input=name.pot &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="color: #38761d;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;3. The .po files are compile into binary &lt;b&gt;.mo&lt;/b&gt; file with msgfmt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. The user, on Unix-type systems, sets the enviroment variable  &lt;code&gt;LC_MESSAGES&lt;/code&gt;, and the program will display strings in the selected language, if there is an &lt;code&gt;.mo&lt;/code&gt; file for it.Then using msginit program translator derives &lt;b&gt;.po&lt;/b&gt; file for example for french it will be &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4476252660045845987-2848589346353320862?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/2848589346353320862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2011/09/gnu-gettext-library.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/2848589346353320862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/2848589346353320862'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2011/09/gnu-gettext-library.html' title='GNU Gettext library'/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-308988636737300144</id><published>2011-03-30T14:41:00.000-07:00</published><updated>2011-03-31T11:05:22.307-07:00</updated><title type='text'>PDF docs with Mixed Rasted Content</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Mixed Rasted Content is the way of keeping images in PDF docs. With couple of words the background image or generally the images in PDF docs are kept in pieces (in segments) for improving the contrast resolution of a raster image composed of pixels. More info on MRC can be found &lt;a href="http://blog.adlibsoftware.com/2011/02/21/document-compression-for-archiving-smaller-isnt-always-better/"&gt;here&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Now the problem is that lots of PDF viewers including Okular, Evince, and lots of others are showing the PDF docs with complete noisy background image, i.e. the background image of the docs is just random composition of some colors. Even in Ubuntu distribution the thumbnails are shown in that way.&lt;br /&gt;&lt;br /&gt;This is especially problematic when viewing scanned documents in MRC PDFs. Even the converted tools like swftool could not solve the problem, so the only reasonable way is to create PDFs without MRC enabled options. In ABBYY Finereader that can be achieved easily from the saving options. &lt;br /&gt;&lt;br /&gt;Another options of doing this is using pdf2pdf converter below which will convert PDFs with MRC to ordinary ones.&lt;br /&gt;&lt;br /&gt;The code pdf2pdf converter is:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Tahoma; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="alt2" dir="ltr" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-style: inset; border-bottom-width: 1px; border-color: initial; border-left-style: inset; border-left-width: 1px; border-right-style: inset; border-right-width: 1px; border-top-style: inset; border-top-width: 1px; color: black; height: 498px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 6px; padding-left: 6px; padding-right: 6px; padding-top: 6px; text-align: left; width: 640px;"&gt;#!/bin/sh&lt;br /&gt;#&lt;br /&gt;# Convert a PDF to another PDF. This effectively strips&lt;br /&gt;# out a lot of stuff from most PDF files.&lt;br /&gt;&lt;br /&gt;gs=`which gs 2&amp;gt;/dev/null`&lt;br /&gt;if [ ! -x "$gs" ]; then&lt;br /&gt;    echo "Error: install ghostscript first" &amp;gt;&amp;amp;2&lt;br /&gt;    exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;OPTS=""&lt;br /&gt;pdfver="1.2"&lt;br /&gt;while true; do&lt;br /&gt;    case "$1" in&lt;br /&gt;    --pdf-version)&lt;br /&gt;        shift&lt;br /&gt;        pdfver="$1"&lt;br /&gt;        ;;&lt;br /&gt;    -?*) OPTS="$OPTS $1";;&lt;br /&gt;    *) break;;&lt;br /&gt;    esac&lt;br /&gt;    shift&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;if [ $# -eq 2 ]; then&lt;br /&gt;    outfile="$2"&lt;br /&gt;elif [ $# -eq 1 ]; then&lt;br /&gt;    outfile="`basename \"$1\" .pdf`.new.pdf"&lt;br /&gt;else&lt;br /&gt;    cat &amp;lt;&lt;eof&gt;&amp;amp;2&lt;br /&gt;Usage: pdf2pdf [--pdf-version (1.2|1.3|1.4)] [gs-options ...] &lt;input.pdf|-&gt; [output.pdf|-]&lt;br /&gt;&lt;br /&gt;Converts a PDF from whatever PDF specification version it currently&lt;br /&gt;exists as to the one specified by \`--pdf-version'. Default: 1.2&lt;br /&gt;&lt;br /&gt;One side-effect of this conversion is the resulting document will have&lt;br /&gt;the no-printing and no-copying flags removed in the output document if&lt;br /&gt;they are set in the input document.&lt;br /&gt;EOF&lt;br /&gt;    exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;exec "$gs" $OPTIONS -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite \&lt;br /&gt;    -dCompatibilityLevel="$pdfver" -sOutputFile="$outfile" -f "$1"&lt;/input.pdf|-&gt;&lt;/eof&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4476252660045845987-308988636737300144?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/308988636737300144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2011/03/pdf-docs-with-mixed-rasted-content.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/308988636737300144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/308988636737300144'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2011/03/pdf-docs-with-mixed-rasted-content.html' title='PDF docs with Mixed Rasted Content'/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-6828118819458497453</id><published>2011-01-07T14:38:00.000-08:00</published><updated>2011-01-07T14:39:28.912-08:00</updated><title type='text'>Where the hackintosh comes from ?</title><content type='html'>&lt;span style="font-size: large;"&gt;&lt;b&gt;Patched Mac OS X kernel : Life-cycle&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The kernel of Mac OS X is an open source product which can be found http://opensource.apple.com/ .&lt;br /&gt;The current kernel version is                                          &lt;a href="http://opensource.apple.com/source/xnu/xnu-1504.9.17/"&gt;                   xnu-1504.9.17&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Russian clever guys "teateam" are patching the mach_kernel upon every update of Mac OS X for running on Intel Atom based CPUs.&lt;br /&gt;Here is their &lt;a href="http://blog.tdev.me/2010/11/mach-kernel-atom-10-5-0-xnu-1504-9-171-mac-os-x-10-6-5/?lang=en"&gt;blog &lt;/a&gt;. The patched kernels are posted in English speaking community &lt;a href="http://www.insanelymac.com/forum/index.php?showtopic=197020"&gt;here.&lt;/a&gt;&lt;br /&gt;The building process of kernel on Mac OS X Snow Leopard is described &lt;a href="http://shantonu.blogspot.com/2009/09/mac-os-x-kernel-source-xnu-has-been.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Based on last resource lots of distributions of hackintoshes are created e.g. SnowyWindOSX .&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Are the hackintoshes legal ?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;In all apple agreement you can find this passage&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;“2. Permitted License Uses and Restrictions.  &lt;br /&gt;A. This License allows you to install and use one copy of the Apple Software on a single &lt;b&gt;Apple-labeled&lt;/b&gt;&lt;br /&gt;computer at a time, and you may not make the Apple Software available over a network where it could be used by &lt;span class="IL_AD" id="IL_AD2"&gt;multiple&lt;/span&gt; computers at the same time.  If you use Setup Assistant to transfer &lt;br /&gt;software from one &lt;b&gt;Apple-labeled&lt;/b&gt; computer to another Apple-labeled computer, please remember that continued use of &lt;span class="IL_AD" id="IL_AD3"&gt;the original&lt;/span&gt; copy of the software may be prohibited once a copy has been &lt;br /&gt;transferred to another computer, unless you already have a licensed copy  of such software on both computers. You should check the relevant &lt;span class="IL_AD" id="IL_AD9"&gt;software license&lt;/span&gt; agreements for applicable terms and &lt;br /&gt;conditions. You may make one copy of the Apple Software (excluding the  Boot ROM code) in machine-readable form for backup purposes only;  provided that the backup copy must include all &lt;br /&gt;copyright or other proprietary notices contained on the original. &lt;br /&gt;B. Certain components of the Apple Software, and third party open source  programs included with the Apple Software, have been or may be made  available by Apple on its Open Source web site &lt;br /&gt;(&lt;a href="http://www.opensource.apple.com/" target="_blank"&gt;http://www.opensource.apple.com/&lt;/a&gt;)  (collectively the “Open-Sourced Components”).  You may modify or  replace only these Open-Sourced Components; provided that: (i) the  resultant modiﬁed &lt;br /&gt;Apple Software is used, in place of the unmodiﬁed Apple Software, on a single &lt;b&gt;Apple-labeled computer&lt;/b&gt;; and (ii) you otherwise comply with the terms of this License and any applicable licensing &lt;br /&gt;terms governing use of the Open-Sourced Components. Apple is not  obligated to provide any maintenance, technical or other support for the  resultant modiﬁed Apple Software. &lt;br /&gt;C. Except as and only to the extent permitted in this License, by  applicable licensing terms governing use of the Open-Sourced Components,  or by applicable law, you may not copy, decompile, &lt;br /&gt;reverse engineer, disassemble, modify, or create derivative works of the  Apple Software or any part thereof. THE APPLE SOFTWARE IS NOT INTENDED  FOR USE IN THE OPERATION OF NUCLEAR &lt;br /&gt;FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, AIR &lt;span class="IL_AD" id="IL_AD1"&gt;TRAFFIC CONTROL&lt;/span&gt; SYSTEMS, LIFE SUPPORT MACHINES OR OTHER EQUIPMENT IN WHICH THE FAILURE OF THE APPLE &lt;br /&gt;SOFTWARE COULD LEAD TO DEATH, &lt;span class="IL_AD" id="IL_AD12"&gt;PERSONAL INJURY&lt;/span&gt;, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE. &lt;br /&gt;3. Transfer. You may not rent, &lt;span class="IL_AD" id="IL_AD4"&gt;lease&lt;/span&gt;,  lend, redistribute or sublicense the Apple Software. You may, however,  make a one-time permanent transfer of all of your license rights to the  Apple Software &lt;br /&gt;(in its original form as provided by Apple) to another party, provided  that: (a) the transfer must include all of the Apple Software, including  all its component parts, original media, printed materials &lt;br /&gt;and this License; (b) you do not retain any copies of the Apple  Software, full or partial, including copies stored on a computer or  other storage device; and© the party receiving the Apple Software &lt;br /&gt;reads and agrees to accept the terms and conditions of this License. You may not rent, lease, lend, redistribute, sublicense or transfer any Apple Software that has been modiﬁed or replaced under &lt;br /&gt;Section 2B above. All components of the Apple Software are provided as  part of a bundle and may not be separated from the bundle and  distributed as standalone applications.  &lt;br /&gt;Updates: If an Apple Software update completely replaces (full install) a  previously licensed version of the Apple Software, you may not use both  versions of the Apple Software at the same time nor &lt;br /&gt;may you transfer them separately. &lt;br /&gt;NFR (Not for Resale) Copies: Notwithstanding other sections of this License, &lt;b&gt;Apple Software labeled&lt;/b&gt; or otherwise provided to you on a promotional basis may only be used for demonstration, &lt;br /&gt;testing and evaluation purposes and may not be resold or transferred.”&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;were says that Apple software can be installed only on apple labeled computers, so this mean that we stick the apple sticker on netbook, notebook or pc then on corresponding device can be easily installed machintosh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4476252660045845987-6828118819458497453?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/6828118819458497453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2011/01/where-hackintosh-comes-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/6828118819458497453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/6828118819458497453'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2011/01/where-hackintosh-comes-from.html' title='Where the hackintosh comes from ?'/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-9042315493166307773</id><published>2010-11-03T04:23:00.000-07:00</published><updated>2010-11-03T04:30:24.704-07:00</updated><title type='text'>Xserver : black screen delay when rotating using xrandr</title><content type='html'>&lt;pre class="bz_comment_text" id="comment_text_0"&gt;When rotating X's display orientation on the fly&amp;nbsp;&lt;/pre&gt;&lt;pre class="bz_comment_text" id="comment_text_0"&gt;using xrandr -o left|normal|inverted|right&lt;br /&gt;command, following transitions are performed with&amp;nbsp;&lt;/pre&gt;&lt;pre class="bz_comment_text" id="comment_text_0"&gt;black screen delay effect i.e. the display becomes&amp;nbsp;&lt;/pre&gt;&lt;pre class="bz_comment_text" id="comment_text_0"&gt;black for a moment then displays rotated screen.&lt;br /&gt;&lt;br /&gt;The following transitions are performed with a delay&amp;nbsp;&lt;/pre&gt;&lt;pre class="bz_comment_text" id="comment_text_0"&gt;a black screen is shown with ~1 second duration, then&amp;nbsp;&lt;/pre&gt;&lt;pre class="bz_comment_text" id="comment_text_0"&gt;rotated screen appears&lt;br /&gt;&lt;span style="color: #cc0000;"&gt;normal &amp;gt; right|left &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc0000;"&gt;inverted &amp;gt; normal|left|right&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc0000;"&gt;left &amp;gt; normal|inverted&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc0000;"&gt;right &amp;gt; normal|inverted&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The following transitions are performed smoothly with&amp;nbsp;&lt;/pre&gt;&lt;pre class="bz_comment_text" id="comment_text_0"&gt;no delays, i.e. "immediately"&lt;br /&gt;&lt;span style="color: #38761d;"&gt;normal &amp;gt; inverted&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;left &amp;gt; right&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;right &amp;gt; left&lt;/span&gt;&lt;/pre&gt;&lt;pre class="bz_comment_text" id="comment_text_0"&gt;&lt;/pre&gt;&lt;pre class="bz_comment_text" id="comment_text_0"&gt;Reason of the problem&lt;br /&gt;Most time consuming code while rotating the display orientation&lt;/pre&gt;&lt;pre class="bz_comment_text" id="comment_text_0"&gt;with xrandr is &lt;br /&gt;&lt;span style="color: #38761d;"&gt;ret = crtc-&amp;gt;funcs-&amp;gt;set_mode_major(crtc, mode, rotation, x, y); &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="bz_comment_text" id="comment_text_0"&gt;intel video drivers function call. This call is located in&amp;nbsp;&lt;/pre&gt;&lt;pre class="bz_comment_text" id="comment_text_0"&gt;hw/xfree86/modes/xf86Crtc.c file in xf86CrtcSetModeTransform&amp;nbsp;&lt;/pre&gt;&lt;pre class="bz_comment_text" id="comment_text_0"&gt;function.&lt;br /&gt;&lt;br /&gt;HW Platforms:&lt;br /&gt;Graphics : Intel GMA 3150 graphics&lt;br /&gt;Graphics : Intel Graphics Media Accelerator (GMA) 950&lt;/pre&gt;&lt;pre class="bz_comment_text" id="comment_text_0"&gt;&lt;/pre&gt;&lt;pre class="bz_comment_text" id="comment_text_0"&gt;Corresponding bug is opened in Xservers's intel video drivers&amp;nbsp;&lt;/pre&gt;&lt;pre class="bz_comment_text" id="comment_text_0"&gt;project&lt;/pre&gt;&lt;pre class="bz_comment_text" id="comment_text_0"&gt;https://bugs.freedesktop.org/show_bug.cgi?id=31313&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4476252660045845987-9042315493166307773?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/9042315493166307773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2010/11/xserver-black-screen-delay-when.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/9042315493166307773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/9042315493166307773'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2010/11/xserver-black-screen-delay-when.html' title='Xserver : black screen delay when rotating using xrandr'/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-2527348291299839298</id><published>2010-10-14T01:00:00.000-07:00</published><updated>2010-10-14T01:00:09.094-07:00</updated><title type='text'>How to checkout a tag from git</title><content type='html'>For the people from subversion's world it may be difficult to switch to understandings of git.&lt;br /&gt;&lt;br /&gt;Firstly &lt;i&gt;git clone&lt;/i&gt; copies "everything" (i.e. commit history) to local machine. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Secondly in git the &lt;b&gt;tag&lt;/b&gt; is simply a label to commit.&lt;br /&gt;For listing tags use&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; git tag -l&lt;/span&gt;&lt;br /&gt;Then you can switch to tag using following command&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; git checkout -b &lt;tag name=""&gt;&lt;/tag&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4476252660045845987-2527348291299839298?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/2527348291299839298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2010/10/how-to-checkout-tag-from-git.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/2527348291299839298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/2527348291299839298'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2010/10/how-to-checkout-tag-from-git.html' title='How to checkout a tag from git'/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-4219026094152715794</id><published>2010-10-02T05:01:00.000-07:00</published><updated>2010-10-02T07:59:32.721-07:00</updated><title type='text'>How to filter accelerometer data from noise</title><content type='html'>&lt;m:smallfrac m:val="off"&gt;    &lt;m:dispdef&gt;    &lt;m:lmargin m:val="0"&gt;    &lt;m:rmargin m:val="0"&gt;    &lt;m:defjc m:val="centerGroup"&gt;    &lt;m:wrapindent m:val="1440"&gt;    &lt;m:intlim m:val="subSup"&gt;    &lt;m:narylim m:val="undOvr"&gt;   &lt;/m:narylim&gt;&lt;/m:intlim&gt; &lt;/m:wrapindent&gt;  &lt;/m:defjc&gt;&lt;/m:rmargin&gt;&lt;/m:lmargin&gt;&lt;/m:dispdef&gt;&lt;/m:smallfrac&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Problem statement&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Suppose we have accelerometer with 3 axis and the raw data is quite noisy. Below is the plots of noisy data (right) and (desired/filtered) data. So we need to write a filter using which we’ll get the required signal.&lt;/div&gt;&lt;div class="MsoNormal"&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/_aIKSc6vgmSM/TKcgNiA3DmI/AAAAAAAAAA4/yc0CaxYmzvU/s1600/a.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="244" src="http://2.bp.blogspot.com/_aIKSc6vgmSM/TKcgNiA3DmI/AAAAAAAAAA4/yc0CaxYmzvU/s640/a.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Left image is filtered from sudden bumps and scaled, so if you notice the left signal is the middle part of right plot from approximately from -240 to 240. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Algorithm&lt;/b&gt;&lt;br /&gt;For filtration quite simple algorithm was used. As the accelerometer data on appropriate axes X, Y, Z is the projection of gravity so the square root of their square sum will be the module of gravity vector with some error +/- 100 points. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Code&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Below is the bash script which was used for filtration above signal.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #274e13; font-size: x-small;"&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;function tosigned() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ $1 -gt 32767 ]; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo&amp;nbsp; $[$1-65536]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo $1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function abs() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ $1 -lt 0 ] ; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo `expr 0 - $1`&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo $1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sleep 1 # Wait for a second then send accelerometer data&lt;br /&gt;&lt;br /&gt;tx=0&lt;br /&gt;ty=0&lt;br /&gt;tz=0&lt;br /&gt;&lt;br /&gt;while :&lt;br /&gt;do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x= "datax from accel"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; y=&lt;/span&gt;&lt;span style="color: #274e13; font-size: x-small;"&gt; "datay from accel"&lt;/span&gt;&lt;br style="color: #274e13;" /&gt;&lt;span style="color: #274e13; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; z=&lt;/span&gt;&lt;span style="color: #274e13; font-size: x-small;"&gt; "dataz from accel"&lt;/span&gt;&lt;br style="color: #274e13;" /&gt;&lt;span style="color: #274e13; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x=$(tosigned $x)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; y=$(tosigned $y)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; z=$(tosigned $z)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ $(abs $x) -lt 1000 -a $(abs $y) -lt 1000 -a $(abs $z) -lt 1000 ]; then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; g=$[$x * $x&amp;nbsp; + $y * $y + $z * $z]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if [ $g -gt 40000 -a $g -lt 70000 ]; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; max=0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if [ $x -gt $max ]; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; max=$x&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if [ $y -gt $max ]; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; max=$y&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if [ $z -gt $max ]; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; max=$z&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if [ $tx -eq 0 -a $ty -eq 0 -a $tz -eq 0 ]; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tx=$x&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ty=$y&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tz=$z&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; continue&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if [ $(abs $[$x - $tx]) -gt 200 -o $(abs $[$y - $ty]) -gt 200 -o $(abs $[$z - $tz]) -gt 200 ]; then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tx=$x&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ty=$y&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tz=$z&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; continue&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; echo "$x $y $z" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #sleep 0.01&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;done&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4476252660045845987-4219026094152715794?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/4219026094152715794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2010/10/how-to-filter-accelerometer-data-from.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/4219026094152715794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/4219026094152715794'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2010/10/how-to-filter-accelerometer-data-from.html' title='How to filter accelerometer data from noise'/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_aIKSc6vgmSM/TKcgNiA3DmI/AAAAAAAAAA4/yc0CaxYmzvU/s72-c/a.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-5419264789946966880</id><published>2010-09-07T01:38:00.000-07:00</published><updated>2010-09-07T01:40:08.761-07:00</updated><title type='text'>How to change the layout of matchbox-keyboard to another language</title><content type='html'>Unfortunately currently matchbox keyboard supports only on keyboard layout, this is written in README file of package.&lt;br /&gt;&lt;br /&gt;Problem statement : We need to load English keyboard layout if the LANG environment variable is set to for example to en_US.UTF-8 and German keyboard layout if LANG is set to de_DE.UTF-8 .&lt;br /&gt;&lt;br /&gt;Solution : That to do this we have to do some little coding in matchbox-keyboard.c file.&lt;br /&gt;&lt;br /&gt;Change following code&lt;br /&gt;&lt;div style="color: #cc0000;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote style="color: #cc0000;"&gt;&amp;nbsp; kb-&amp;gt;selected_layout&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (MBKeyboardLayout *)util_list_get_nth_data(kb-&amp;gt;layouts, 0);&lt;/blockquote&gt;&lt;br /&gt;to &lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp; char* lang = getenv("LANG");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp; if (!strcmp(lang, "en_US.UTF-8")) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kb-&amp;gt;selected_layout&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (MBKeyboardLayout *)util_list_get_nth_data(kb-&amp;gt;layouts, 1);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp; } else {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kb-&amp;gt;selected_layout&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (MBKeyboardLayout *)util_list_get_nth_data(kb-&amp;gt;layouts, 0);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;/blockquote&gt;Also edit the keyboard.xml file to contain English and German keyboard layouts in my case. Approximately with this format.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div style="color: blue;"&gt;&lt;keyboard&gt;&lt;br /&gt;&lt;options&gt;&lt;br /&gt;...&lt;/options&gt;&lt;br /&gt;&lt;br /&gt;&lt;layout id="German keyboard"&gt;&lt;br /&gt;&amp;nbsp; &lt;row&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;key&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/key&gt;&lt;br /&gt;...&lt;br /&gt;&amp;nbsp; &lt;/row&gt;&lt;/layout&gt;&lt;br /&gt;&lt;layout id="English keyboard"&gt;&lt;/layout&gt;&lt;/keyboard&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;....&lt;/div&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Sorry for not so detailed instructions ... time is killing ... &lt;br /&gt;&lt;br /&gt;Adios !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4476252660045845987-5419264789946966880?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/5419264789946966880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2010/09/how-to-change-layout-of-matchbox.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/5419264789946966880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/5419264789946966880'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2010/09/how-to-change-layout-of-matchbox.html' title='How to change the layout of matchbox-keyboard to another language'/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-9196895055841446063</id><published>2010-08-23T06:43:00.000-07:00</published><updated>2010-08-23T06:46:29.484-07:00</updated><title type='text'>How to simulate CAPS LOCK press in Xlib</title><content type='html'>&lt;span style="color: rgb(0, 0, 153);"&gt;#include "stdio.h"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#include "X11/Xlib.h"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#include "X11/keysym.h"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#include "time.h"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Display *display=NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;unsigned int keycode;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;int main ()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        display = XOpenDisplay(NULL);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        keycode = XKeysymToKeycode(display, XK_Caps_Lock);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        printf ("\npressed\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        XTestFakeKeyEvent(display, keycode, True, CurrentTime);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        XFlush(display);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        printf ("\nreleased\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        XTestFakeKeyEvent(display, keycode, False, CurrentTime);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        XFlush(display);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        sleep(3);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        /* type something here */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        printf ("\npressed\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        XTestFakeKeyEvent(display, keycode, True, CurrentTime);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        XFlush(display);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        printf ("\nreleased\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        XTestFakeKeyEvent(display, keycode, False, CurrentTime);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        XFlush(display);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        sleep(3);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        return 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Replace " " -s with &lt; &gt; for header files.&lt;br /&gt;and compile using&lt;br /&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;gcc main.c -lX11 -lXtst&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4476252660045845987-9196895055841446063?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/9196895055841446063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2010/08/how-to-simulate-caps-lock-press-in-xlib.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/9196895055841446063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/9196895055841446063'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2010/08/how-to-simulate-caps-lock-press-in-xlib.html' title='How to simulate CAPS LOCK press in Xlib'/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-6975479286972711430</id><published>2010-08-23T04:23:00.000-07:00</published><updated>2010-08-23T04:25:35.132-07:00</updated><title type='text'>Retrieving CAPS LOCK info using Xlib</title><content type='html'>&lt;span style="color: rgb(0, 0, 153);"&gt;#include &lt;x11 h=""&gt;&lt;/x11&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#include &lt;iostream&gt;&lt;/iostream&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;int main() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        Display * d = XOpenDisplay((char*)0);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        bool caps_state = false;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        if (d) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                unsigned n;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                XkbGetIndicatorState(d, XkbUseCoreKbd, &amp;amp;n);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                caps_state = (n &amp;amp; 0x01) == 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        std::cout &lt;&lt; "caps_state = " &lt;&lt; std::endl;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        return 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;Compile above code using&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;&lt;br /&gt;g++ main.cpp -L/usr/X11R6/lib -lX11&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4476252660045845987-6975479286972711430?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/6975479286972711430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2010/08/retrieving-caps-lock-info-using-xlib.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/6975479286972711430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/6975479286972711430'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2010/08/retrieving-caps-lock-info-using-xlib.html' title='Retrieving CAPS LOCK info using Xlib'/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-2749629916285842595</id><published>2010-08-19T00:40:00.000-07:00</published><updated>2010-08-19T00:41:05.542-07:00</updated><title type='text'></title><content type='html'>&lt;h1&gt;DeviceKit&lt;/h1&gt;  &lt;p&gt;DeviceKit is a modular hardware abstraction layer designed for use in  Linux  systems that is designed to simplify device management and  replace the current monolithic  Linux HAL.  DeviceKit includes the  ability to enumerate system devices and send  notifications when  hardware is added or removed from the computer  system.&lt;/p&gt;  &lt;p&gt;DBus Interfaces provided by DeviceKit are following&lt;/p&gt; &lt;ul&gt;&lt;li&gt;org.freedesktop.DeviceKit.Power - Power interface&lt;/li&gt;&lt;li&gt;org.freedesktop.DeviceKit.Power.Device - Device interface&lt;/li&gt;&lt;li&gt;org.freedesktop.DeviceKit.Power.QoS- QoS interface&lt;/li&gt;&lt;/ul&gt;   &lt;h1&gt;&lt;a name="DeviceKit-Samplesusingpython"&gt;&lt;/a&gt;Samples using python&lt;/h1&gt;   &lt;h4&gt;&lt;a name="DeviceKit-Enumerateallpowerobjectsonthesystem"&gt;&lt;/a&gt;Enumerate all power objects on the system&lt;/h4&gt;  &lt;p&gt;Running ths script in virtual machine will show only one device AC.  Running on real device will show other devices as well e.g. battery etc.&lt;/p&gt; &lt;div class="code panel" style="border-width: 1px;"&gt;&lt;div class="codeContent panelContent"&gt; &lt;div class="syntaxhighlighter nogutter  java" id="highlighter_595223"&gt;&lt;div class="lines"&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java keyword"&gt;import&lt;/code&gt; &lt;code class="java plain"&gt;dbus&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;bus = dbus.SystemBus()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;proxy = bus.get_object(&lt;/code&gt;&lt;code class="java string"&gt;'org.freedesktop.DeviceKit.Power'&lt;/code&gt;&lt;code class="java plain"&gt;, &lt;/code&gt;&lt;code class="java string"&gt;'/org/freedesktop/DeviceKit/Power'&lt;/code&gt;&lt;code class="java plain"&gt;)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;iface = dbus.Interface(proxy, &lt;/code&gt;&lt;code class="java string"&gt;'org.freedesktop.DeviceKit.Power'&lt;/code&gt;&lt;code class="java plain"&gt;)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;lst = iface.EnumerateDevices()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;print str(lst)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;/div&gt;&lt;/div&gt;  &lt;h4&gt;&lt;a name="DeviceKit-Retrievingbatterystate"&gt;&lt;/a&gt;Retrieving battery state&lt;/h4&gt;  &lt;p&gt;State is numberical value with following assignments&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;b&gt;0:&lt;/b&gt; Unknown&lt;/li&gt;&lt;li&gt;&lt;b&gt;1:&lt;/b&gt; Charging&lt;/li&gt;&lt;li&gt;&lt;b&gt;2:&lt;/b&gt; Discharging&lt;/li&gt;&lt;li&gt;&lt;b&gt;3:&lt;/b&gt; Empty&lt;/li&gt;&lt;li&gt;&lt;b&gt;4:&lt;/b&gt; Fully charged&lt;/li&gt;&lt;li&gt;&lt;b&gt;5:&lt;/b&gt; Pending charge&lt;/li&gt;&lt;li&gt;&lt;b&gt;6:&lt;/b&gt; Pending discharge &lt;div class="code panel" style="border-width: 1px;"&gt;&lt;div class="codeContent panelContent"&gt; &lt;div class="syntaxhighlighter nogutter  java" id="highlighter_957611"&gt;&lt;div class="lines"&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java keyword"&gt;import&lt;/code&gt; &lt;code class="java plain"&gt;dbus&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;def printPropValue(prop):&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;   &lt;/code&gt;&lt;code class="java plain"&gt;bus = dbus.SystemBus()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;   &lt;/code&gt;&lt;code class="java plain"&gt;proxy = bus.get_object(&lt;/code&gt;&lt;code class="java string"&gt;'org.freedesktop.DeviceKit.Power'&lt;/code&gt;&lt;code class="java plain"&gt;, &lt;/code&gt;&lt;code class="java string"&gt;'/org/freedesktop/DeviceKit/Power'&lt;/code&gt;&lt;code class="java plain"&gt;)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;   &lt;/code&gt;&lt;code class="java plain"&gt;iface = dbus.Interface(proxy, &lt;/code&gt;&lt;code class="java string"&gt;'org.freedesktop.DeviceKit.Power'&lt;/code&gt;&lt;code class="java plain"&gt;)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;   &lt;/code&gt;&lt;code class="java plain"&gt;lst = iface.EnumerateDevices()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;   &lt;/code&gt;&lt;code class="java plain"&gt;id = len(lst) - &lt;/code&gt;&lt;code class="java value"&gt;1&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;   &lt;/code&gt;&lt;code class="java plain"&gt;proxy1 = bus.get_object(&lt;/code&gt;&lt;code class="java string"&gt;'org.freedesktop.DeviceKit.Power'&lt;/code&gt;&lt;code class="java plain"&gt;, lst\[id\])&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;   &lt;/code&gt;&lt;code class="java plain"&gt;iface1 = dbus.Interface(proxy1, &lt;/code&gt;&lt;code class="java string"&gt;'org.freedesktop.DBus.Properties'&lt;/code&gt;&lt;code class="java plain"&gt;)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;   &lt;/code&gt;&lt;code class="java plain"&gt;val = iface1.Get(lst\[id\], prop)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;   &lt;/code&gt;&lt;code class="java plain"&gt;print prop + &lt;/code&gt;&lt;code class="java string"&gt;'\t'&lt;/code&gt; &lt;code class="java plain"&gt;+ str(val)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;printPropValue(&lt;/code&gt;&lt;code class="java string"&gt;'State'&lt;/code&gt;&lt;code class="java plain"&gt;)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;   &lt;h4&gt;&lt;a name="DeviceKit-"&gt;&lt;/a&gt;&lt;/h4&gt;    &lt;h4&gt;&lt;a name="DeviceKit-GettingBatteryPercentage"&gt;&lt;/a&gt;Getting Battery Percentage&lt;/h4&gt;  &lt;p&gt;That to get the battery percentage we need to read "Percentage" parameter of "org.freedesktop.DeviceKit.Power" interface.&lt;/p&gt;   &lt;p&gt;Use the same function above passing "Percentage" argument&lt;/p&gt; &lt;div class="panel" style="border-width: 1px;"&gt;&lt;div class="panelContent"&gt; &lt;p&gt;printPropValue('Percentage')&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;  &lt;h2&gt;&lt;a name="DeviceKit-Help"&gt;&lt;/a&gt;Help&lt;/h2&gt;  &lt;p&gt;&lt;a href="http://people.freedesktop.org/%7Ehughsient/DeviceKit-power/Device.html" rel="nofollow"&gt;http://people.freedesktop.org/~hughsient/DeviceKit-power/Device.html&lt;/a&gt;&lt;/p&gt;   &lt;p&gt;&lt;a href="http://people.freedesktop.org/%7Ehughsient/DeviceKit-power/ref-dbus.html" rel="nofollow"&gt;http://people.freedesktop.org/~hughsient/DeviceKit-power/ref-dbus.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://hal.freedesktop.org/docs/DeviceKit/" rel="nofollow"&gt;http://hal.freedesktop.org/docs/DeviceKit/&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4476252660045845987-2749629916285842595?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/2749629916285842595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2010/08/devicekit-devicekit-is-modular-hardware.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/2749629916285842595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/2749629916285842595'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2010/08/devicekit-devicekit-is-modular-hardware.html' title=''/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-2989735261191868039</id><published>2010-08-18T07:05:00.000-07:00</published><updated>2010-08-18T07:07:55.658-07:00</updated><title type='text'>How to extract .rpm package content</title><content type='html'>Install rpmdevtools package&lt;br /&gt;&lt;ul&gt;&lt;li&gt;sudo yum install rpmdevtools&lt;/li&gt;&lt;/ul&gt;Then extract&lt;br /&gt;&lt;ul&gt;&lt;li&gt;rpm2cpio somefile.rpm | cpio -idmv&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4476252660045845987-2989735261191868039?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/2989735261191868039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2010/08/how-to-extract-rpm-package-content.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/2989735261191868039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/2989735261191868039'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2010/08/how-to-extract-rpm-package-content.html' title='How to extract .rpm package content'/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-6820493069064107518</id><published>2010-08-12T05:38:00.000-07:00</published><updated>2010-08-12T05:39:24.347-07:00</updated><title type='text'></title><content type='html'>&lt;h1&gt;PolicyKit&lt;/h1&gt;  &lt;p&gt;PolicyKit is an operating system component for controlling  system-wide privileges in Unix-like operating systems. It provides an  roganized way for non-privileged processes to communicate with  privileged ones. In contrast to systems such as sudo, it does  not grant  root permission to an entire process, but rather allows a  finer level  of control of centralized system policy.&lt;/p&gt;  &lt;p&gt;Files shipped with PolicyKit and 3rd party packages (e.g. under        package manager control) typically have comments (such       as “DO NOT  EDIT THIS FILE,  it will be overwritten on       update”) telling the  system administrator that  changes       will be overwritten on update.&lt;/p&gt;  &lt;h1&gt;&lt;a name="PolicyKit-ConfiguringPolicyKit"&gt;&lt;/a&gt;Configuring PolicyKit&lt;/h1&gt;  &lt;p&gt;Configuration for the Local Authority is read from files in       the  /etc/polkit-1/localauthority.conf.d directory.&lt;/p&gt;  &lt;p&gt;The Local Authority reads files with .pkla extension from all  directories located inside the /etc/polkit-1/localauthority and  /var/lib/polkit-1/localauthority directories. By default, the following  sub-directories are  installed.&lt;/p&gt; &lt;div class="panel" style="border-width: 1px;"&gt;&lt;div class="panelContent"&gt; &lt;p&gt;10-vendor.d              Intended for use by the OS vendor.&lt;br /&gt;20-org.d                    Intended for the organization deploying the  OS.&lt;br /&gt;30-site.d                    Intended for the site deploying the system.&lt;br /&gt;50-local.d                  Intended for local usage.&lt;br /&gt;90-mandatory.d       Intended for the organization deploying the OS.&lt;/p&gt; &lt;/div&gt;&lt;/div&gt; &lt;p&gt;New direcrtories and can be added or removed. The configuration files  are the .pkla files.       A .pkla file must be named by using a        scheme to ensure that the name is unique, e.g. reverse DNS        notation or similar. For example com.mycompany.packagekit.pkla .&lt;/p&gt;  &lt;h4&gt;&lt;a name="PolicyKit-Setup.pklafiles"&gt;&lt;/a&gt;Setup .pkla files&lt;/h4&gt;  &lt;p&gt;Each group in a .pkla file must have a  name       that is unique  within the file it belongs to.&lt;/p&gt;  &lt;p&gt;The following keys       are are recognized:&lt;/p&gt;   &lt;div class="panel" style="border-width: 1px;"&gt;&lt;div class="panelContent"&gt; &lt;p&gt;&lt;em&gt;Identity&lt;/em&gt;&lt;em&gt;         &lt;/em&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;A semi-colon separated list of globs to match identities.  Each  glob             should start with unix-user: or unix-group: to specify  whether  to match on a             UNIX user name or a UNIX group name.&lt;/li&gt;&lt;/ul&gt;   &lt;p&gt;&lt;em&gt;Action&lt;/em&gt;&lt;em&gt; &lt;/em&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;A semi-colon separated list of globs to match action  identifiers.&lt;/li&gt;&lt;/ul&gt;   &lt;p&gt;&lt;em&gt;ResultActive&lt;/em&gt;&lt;em&gt;  &lt;/em&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;The result to return for subjects in an active local              session that matches one or more of the given identities.              Allowed values are similar to what can be used in             the &lt;em&gt;defaults&lt;/em&gt;  section of .policy files used to  define             actions, e.g. yes,  no, auth_self, auth_self_keep, auth_admin and auth_admin_keep.&lt;/li&gt;&lt;/ul&gt;   &lt;p&gt;&lt;em&gt;ResultInactive&lt;/em&gt;&lt;em&gt;  &lt;/em&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Like &lt;em&gt;ResultActive&lt;/em&gt; but  instead applies             to  subjects in inactive local sessions.&lt;/li&gt;&lt;/ul&gt;   &lt;p&gt;&lt;em&gt;ResultAny&lt;/em&gt;&lt;em&gt;        &lt;/em&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Like &lt;em&gt;ResultActive&lt;/em&gt; but  instead applies             to any  subject.&lt;/li&gt;&lt;/ul&gt;   &lt;p&gt;&lt;em&gt;ReturnValue&lt;/em&gt;&lt;em&gt;     &lt;/em&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;A semi-colon separated list of key/value pairs (of the              form key=value) that are added to the details of              authorization result on positive matches.&lt;/li&gt;&lt;/ul&gt; &lt;/div&gt;&lt;/div&gt; &lt;p&gt;Sample .pkla file&lt;/p&gt; &lt;div class="code panel" style="border-width: 1px;"&gt;&lt;div class="codeContent panelContent"&gt; &lt;div class="syntaxhighlighter nogutter  java" id="highlighter_772998"&gt;&lt;div class="lines"&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;# Allow &lt;/code&gt;&lt;code class="java string"&gt;"standard users"&lt;/code&gt; &lt;code class="java plain"&gt;to &lt;/code&gt;&lt;code class="java keyword"&gt;do&lt;/code&gt; &lt;code class="java plain"&gt;some things  without being interrupted by&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;# password dialogs (TODO: not complete)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;#&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;[Desktop User Permissions]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;Identity=unix-group:wetab&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;Action=org.freedesktop.packagekit.&lt;/code&gt;&lt;code class="java keyword"&gt;package&lt;/code&gt;&lt;code class="java plain"&gt;-install;org.freedesktop.packagekit.&lt;/code&gt;&lt;code class="java keyword"&gt;package&lt;/code&gt;&lt;code class="java plain"&gt;-remove;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;ResultAny=no&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;ResultInactive=no&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;ResultActive=yes&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;/div&gt;&lt;/div&gt; &lt;p&gt;This configuration file allows packagekit to install and remove  packages.&lt;/p&gt;   &lt;h1&gt;&lt;a name="PolicyKit-Nonsecurewayofconfiguring"&gt;&lt;/a&gt;Non secure way of  configuring&lt;/h1&gt;   &lt;p&gt;The policies files are located in /usr/share/polkit-1/actions/"DBUS  application name" .&lt;/p&gt;   &lt;h3&gt;&lt;a name="PolicyKit-Issue"&gt;&lt;/a&gt;Issue&lt;/h3&gt;  &lt;p&gt;Anything in /usr isn't considered  'configuration', so any time the  PolicyKit is updated modifications will be  wiped out and the  modifications should be done again. Configuration should be set /etc or  /var .&lt;/p&gt;  &lt;h1&gt;&lt;a name="PolicyKit-References"&gt;&lt;/a&gt;References&lt;/h1&gt;  &lt;p&gt;&lt;a href="http://hal.freedesktop.org/docs/polkit/pklocalauthority.8.html" rel="nofollow"&gt;http://hal.freedesktop.org/docs/polkit/pklocalauthority.8.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; $ man pklocalauthority&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4476252660045845987-6820493069064107518?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/6820493069064107518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2010/08/policykit-policykit-is-operating-system.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/6820493069064107518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/6820493069064107518'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2010/08/policykit-policykit-is-operating-system.html' title=''/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-8485804106789968306</id><published>2010-08-12T05:35:00.000-07:00</published><updated>2010-08-12T05:38:01.812-07:00</updated><title type='text'></title><content type='html'>&lt;table cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="pagecontent" valign="top" width="98%" align="left"&gt;&lt;div class="wiki-content"&gt;&lt;h1&gt;PackageKit&lt;/h1&gt;  &lt;p&gt;Packagekit is an open source and free suite of software applications  designed to provide a consistent and high-level front end for a number  of different package management systems. PackageKit itself is a system  activated daemon  called packagekitd,  that abstracts out differences  between the different systems. The actual nuts-and-bolts distro tool  (yum, apt, conary, etc) is used by PackageKit using compiled and  scripted helpers. Those tools (yum, apt, conary, etc) are called the  backend for PackageKit. PackageKit isn't meant to replace these tools,  instead providing a common set of abstractions that can be used by  standard GUI and text  mode package managers. It provides C++, python  APIs which actually at this currently are not well documented and  everything presented here is derived from my studying of the code.&lt;/p&gt;  &lt;h2&gt;&lt;a name="PackagemanagementusingPackageKitAPI-Installation"&gt;&lt;/a&gt;Installation&lt;/h2&gt;  &lt;p&gt;The recent version of PackageKit is 0.6.6, this is not available in  repositories and it should be compiled from sources, which can be found  here &lt;a href="http://www.packagekit.org/releases/PackageKit-0.6.6.tar.gz" rel="nofollow"&gt;http://www.packagekit.org/releases/PackageKit-0.6.6.tar.gz&lt;/a&gt;  . Please check if newer versions are available. While configuring  PackageKit dont forget to configure it with following flags&lt;/p&gt;  &lt;div class="panel" style="border-width: 1px;"&gt;&lt;div class="panelContent"&gt; &lt;p&gt;./configure --with-default-backend=yum --enable-yum --prefix=/usr  --sysconfdir=/etc --disable-static --disable-local&lt;br /&gt;make&lt;br /&gt;sudo make install&lt;/p&gt; &lt;/div&gt;&lt;/div&gt; &lt;p&gt;PackageKit daemon is a system activated daemon so you have to point  dbus the location of the packagekit's daemon by configuring following  file&lt;/p&gt;  &lt;div class="panel" style="border-width: 1px;"&gt;&lt;div class="panelContent"&gt; &lt;p&gt;/usr/share/dbus-1/system-services/org.freedesktop.PackageKit.service&lt;/p&gt; &lt;/div&gt;&lt;/div&gt; &lt;p&gt;Restart dbus service&lt;/p&gt; &lt;div class="panel" style="border-width: 1px;"&gt;&lt;div class="panelContent"&gt; &lt;p&gt;sudo  /etc/init.d/messagebus restart&lt;/p&gt; &lt;/div&gt;&lt;/div&gt; &lt;p&gt;PackageKit daemon location is&lt;/p&gt; &lt;div class="panel" style="border-width: 1px;"&gt;&lt;div class="panelContent"&gt; &lt;p&gt;/usr/libexec/packagekitd&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;  &lt;h5&gt;&lt;a name="PackagemanagementusingPackageKitAPI-Issue"&gt;&lt;/a&gt;Issue&lt;/h5&gt;  &lt;p&gt;The attached script failed installing packages with "wetab" user  privileges, the reason is not clear yet. That to run script successfully  launch it with "sudo".&lt;/p&gt;   &lt;h2&gt;&lt;a name="PackagemanagementusingPackageKitAPI-RawDbusAPI"&gt;&lt;/a&gt;Raw  Dbus API&lt;/h2&gt;   &lt;h4&gt;&lt;a name="PackagemanagementusingPackageKitAPI-Issues"&gt;&lt;/a&gt;Issues&lt;/h4&gt;  &lt;p&gt;The DBus API is defined by PackageKit but it's up to the backends   themselves to do the right thing, and support all the different ways of   using it. Depending on platform/packagekit version Dbus API may differ,  for  instance Dbus API in Ubuntu for the same version of PackageKit  differed from the  Dbus API under MeeGo, as authorof PackageKit said  "Ubuntu really needs to update PackageKit to something more up to date."&lt;/p&gt;  &lt;h6&gt;&lt;a name="PackagemanagementusingPackageKitAPI-API"&gt;&lt;/a&gt;API&lt;/h6&gt;   &lt;p&gt;&lt;b&gt;Object path :&lt;/b&gt; /org/freedesktop/PackageKit&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Interfaces :&lt;/b&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;org.freedesktop.PackageKit&lt;/li&gt;&lt;li&gt;org.freedesktop.PackageKit.Transaction&lt;/li&gt;&lt;/ul&gt;   &lt;p&gt;API description can be found &lt;a href="http://packagekit.org/gtk-doc/PackageKit.html" rel="nofollow"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The latest interface is available in the source tree or &lt;a href="http://gitweb.freedesktop.org/?p=packagekit.git;a=blob;f=src/org.freedesktop.PackageKit.xml" rel="nofollow"&gt;on-line&lt;/a&gt;.&lt;/p&gt;    &lt;h6&gt;&lt;a name="PackagemanagementusingPackageKitAPI-Help"&gt;&lt;/a&gt;Help&lt;/h6&gt;   &lt;p&gt;That to see Dbus API on current platform install Dbus debugger called  "d-feet". If after launching "d-feet" does not show  /org/freedom/PackageKit object path then launch packagekitd daemon  manually with super user privilages: &lt;b&gt;sudo /usr/sbin/packagekitd&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Connect to "unix:path=/var/run/dbus/system_bus_socket" to debug  SystemBus&lt;/p&gt;  &lt;p&gt;&lt;span class="image-wrap" style=""&gt;&lt;img src="http://earth/confluence/download/attachments/84770886/MeeGo.png?version=1&amp;amp;modificationDate=1281356461000" height="476" width="404" border="0" /&gt;&lt;/span&gt;&lt;/p&gt;   &lt;h2&gt;&lt;a name="PackagemanagementusingPackageKitAPI-HighLevelPythonAPI"&gt;&lt;/a&gt;High  Level Python API&lt;/h2&gt;  &lt;p&gt;There an python class called "PackageKitClient" located in  /usr/lib/python2.6/site-packages/packagekit/client.py file, which  provides high level interface for package management. Unfortunatelly the  class is not well documented and some functions are not working OK.  Because of this the &lt;b&gt;packagekit-wrapper-meego.py&lt;/b&gt; was implemented,  which contains PackageKitClient wrapper class similiar to  PackageKitClient implemented in  /usr/lib/python2.6/site-packages/packagekit/client.py file. The  packagekit-wrapper-meego.py is modifcation/addition of Canonicals  packagekit wrapper for MeeGo. Run script with superuser privilegies as  currently there is an issue decribed in PackageKit installation section.&lt;/p&gt;   &lt;p&gt;The PackageKitClient (Attached) Class is written in python and  contains  methods described below. Also it contains the usage of all  described functionalities.&lt;/p&gt; &lt;div class="panel" style="border-width: 1px;"&gt;&lt;div class="panelContent"&gt; &lt;p&gt;The PackageKitClient class provides following methods:&lt;/p&gt;  &lt;p&gt;Resolve(filter, package) : returns list of matched packages&lt;/p&gt;   &lt;p&gt;GetDetails(package) : returns the details of the packages&lt;/p&gt;   &lt;p&gt;SearchName(filter, name) : searches and returnes availlable packages&lt;/p&gt;  &lt;p&gt;InstallPackage(package, &lt;callback-function-for-progress&gt;)&lt;/callback-function-for-progress&gt;&lt;/p&gt;   &lt;p&gt;RemovePackage(package, &lt;callback-fuction-for-progress&gt;)&lt;/callback-fuction-for-progress&gt;&lt;/p&gt; &lt;/div&gt;&lt;/div&gt; &lt;p&gt;The packagekit-wrapper-meego.py is attached.&lt;/p&gt;  &lt;p&gt;The mechanisms that are used in class for implementing the methods  are same for implementing the same methods in C++ as well.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Sample of retrieving Transaction's status using python:&lt;/b&gt;&lt;/p&gt; &lt;div class="code panel" style="border-width: 1px;"&gt;&lt;div class="codeContent panelContent"&gt; &lt;div class="syntaxhighlighter nogutter  java" id="highlighter_314433"&gt;&lt;div class="lines"&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java keyword"&gt;import&lt;/code&gt; &lt;code class="java plain"&gt;dbus&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java keyword"&gt;try&lt;/code&gt;&lt;code class="java plain"&gt;:&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;        &lt;/code&gt;&lt;code class="java plain"&gt;bus =  dbus.SystemBus()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line  alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;except  dbus.DBusException, e:&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;        &lt;/code&gt;&lt;code class="java plain"&gt;print &lt;/code&gt;&lt;code class="java string"&gt;'Unable to connect to dbus: %s'&lt;/code&gt; &lt;code class="java plain"&gt;% str(e)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;        &lt;/code&gt;&lt;code class="java plain"&gt;sys.exit()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java keyword"&gt;try&lt;/code&gt;&lt;code class="java plain"&gt;:&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;        &lt;/code&gt;&lt;code class="java plain"&gt;proxy =  bus.get_object(&lt;/code&gt;&lt;code class="java string"&gt;'org.freedesktop.PackageKit'&lt;/code&gt;&lt;code class="java plain"&gt;, &lt;/code&gt;&lt;code class="java string"&gt;'/org/freedesktop/PackageKit'&lt;/code&gt;&lt;code class="java plain"&gt;)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;        &lt;/code&gt;&lt;code class="java plain"&gt;iface =  dbus.Interface(proxy, &lt;/code&gt;&lt;code class="java string"&gt;'org.freedesktop.PackageKit'&lt;/code&gt;&lt;code class="java plain"&gt;)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;        &lt;/code&gt;&lt;code class="java plain"&gt;tid =  iface.GetTid()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line  alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;        &lt;/code&gt;&lt;code class="java plain"&gt;proxy1 =  bus.get_object(&lt;/code&gt;&lt;code class="java string"&gt;'org.freedesktop.PackageKit'&lt;/code&gt;&lt;code class="java plain"&gt;, str(tid))&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;        &lt;/code&gt;&lt;code class="java plain"&gt;iface1 =  dbus.Interface(proxy1, &lt;/code&gt;&lt;code class="java string"&gt;'org.freedesktop.DBus.Properties'&lt;/code&gt;&lt;code class="java plain"&gt;)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;        &lt;/code&gt;&lt;code class="java plain"&gt;lst = iface1.Get(&lt;/code&gt;&lt;code class="java string"&gt;'org.freedesktop.PackageKit.Transaction'&lt;/code&gt;&lt;code class="java plain"&gt;, &lt;/code&gt;&lt;code class="java string"&gt;'Status'&lt;/code&gt;&lt;code class="java plain"&gt;)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;        &lt;/code&gt;&lt;code class="java plain"&gt;print str(lst)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;except dbus.DBusException, e:&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;        &lt;/code&gt;&lt;code class="java plain"&gt;print &lt;/code&gt;&lt;code class="java string"&gt;'Unable to use PackageKit: %s'&lt;/code&gt; &lt;code class="java plain"&gt;% str(e)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;/div&gt;&lt;/div&gt;  &lt;h6&gt;&lt;a name="PackagemanagementusingPackageKitAPI-"&gt;&lt;/a&gt;&lt;/h6&gt;         &lt;h2&gt;&lt;a name="PackagemanagementusingPackageKitAPI-"&gt;&lt;/a&gt;&lt;/h2&gt;         &lt;h2&gt;&lt;a name="PackagemanagementusingPackageKitAPI-HighLevelC\API,usinglibpackagekit"&gt;&lt;/a&gt;High  Level C++ API, using libpackagekit&lt;/h2&gt;  &lt;p&gt;The &lt;a href="http://packagekit.org/gtk-doc/PkClient.html" rel="nofollow"&gt;libpackagekit  gobject library&lt;/a&gt;wraps the DBUS  interface in a nice glib-style API. This makes designing programs that  use libpackagekit can concentrate on core functionality rather that the  DBUS and PackageKit internals. PkClient in libpackagekit can be used as  easily as:&lt;/p&gt;  &lt;p&gt;Code sample&lt;/p&gt;  &lt;div class="code panel" style="border-width: 1px;"&gt;&lt;div class="codeContent panelContent"&gt; &lt;div class="syntaxhighlighter nogutter  java" id="highlighter_329708"&gt;&lt;div class="lines"&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;PkClient *client;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;client = pk_client_new ();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;pk_client_install_package (client, &lt;/code&gt;&lt;code class="java string"&gt;"openoffice-clipart"&lt;/code&gt;&lt;code class="java plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content"&gt;&lt;code class="java plain"&gt;g_object_unref (client);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;/div&gt;&lt;/div&gt; &lt;p&gt;More info can be found here &lt;a href="http://packagekit.org/gtk-doc/PkClient.html" rel="nofollow"&gt;http://packagekit.org/gtk-doc/PkClient.html&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;&lt;a name="PackagemanagementusingPackageKitAPI-Mechanismofretrievingprogressinformation"&gt;&lt;/a&gt;Mechanism  of retrieving progress information&lt;/h2&gt;  &lt;p&gt;The org.freedesktop.PackageKit.Transaction interface containes  transaction properties (status, percentage, etc) and signal Changed()  which is invoked if one of the parameters is changed. So that to get  installation/removal progres just connect to the Changed() signal and  read off the properties.&lt;/p&gt;  &lt;h1&gt;&lt;a name="PackagemanagementusingPackageKitAPI-PolicyKitandPackageKit"&gt;&lt;/a&gt;PolicyKit  and PackageKit&lt;/h1&gt;   &lt;p&gt;Running DBus methods like InstallPacakges, RemovePackages,  UpdateSystem and others requires authorization with root account. That  to change authorization policies for this and other DBus methods  PolicyKit should be configured. How to configure PolicyKit can be found in this blog. That  to set policy the action name for the appropriate name should be known  for example "InstallPackages" methods action name is  "org.freedesktop.packagekit.install-untrusted".&lt;/p&gt;  &lt;p&gt;Action names can be found the packagekit DBus API description here &lt;a href="http://www.packagekit.org/gtk-doc/api-reference.html" rel="nofollow"&gt;http://www.packagekit.org/gtk-doc/api-reference.html&lt;/a&gt;&lt;/p&gt;   &lt;h2&gt;&lt;a name="PackagemanagementusingPackageKitAPI-Issue"&gt;&lt;/a&gt;Issue&lt;/h2&gt;  &lt;p&gt;Depending on configured policies, platform there might be need to set  addtional policies for example that authorize SystemUpdate without root  password "sudo" also "org.freedesktop.packagekit.install-untrusted"  action should be setResultActive=yes .&lt;/p&gt;  &lt;h3&gt;&lt;a name="PackagemanagementusingPackageKitAPI-Solution"&gt;&lt;/a&gt;Solution&lt;/h3&gt;   &lt;p&gt;That to see the required action names install package "polkit-gnome"  which is available in meego repositories. Polkit-gnome will launch a  pop-up window if the application requries the autorization.&lt;/p&gt;  &lt;p&gt;Under details you can see the action which required authorization.&lt;/p&gt;   &lt;p&gt;Here is a sample which shows action name for package removal&lt;/p&gt;  &lt;p&gt; &lt;span class="image-wrap" style=""&gt;&lt;img src="http://earth/confluence/download/attachments/84770886/polkit-gnome.png?version=1&amp;amp;modificationDate=1281605934000" height="242" width="376" border="0" /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h2&gt;&lt;a name="PackagemanagementusingPackageKitAPI-References"&gt;&lt;/a&gt;References&lt;/h2&gt;  &lt;p&gt;&lt;a href="http://packagekit.org/" rel="nofollow"&gt;http://packagekit.org/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://packagekit.org/gtk-doc/" rel="nofollow"&gt;http://packagekit.org/gtk-doc/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="noprint" width="1%"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="noprint" valign="top" width="1%" align="left" bgcolor="#f0f0f0"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4476252660045845987-8485804106789968306?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/8485804106789968306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2010/08/packagekit-packagekit-is-open-source.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/8485804106789968306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/8485804106789968306'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2010/08/packagekit-packagekit-is-open-source.html' title=''/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-4080941024242705623</id><published>2010-07-04T11:29:00.001-07:00</published><updated>2010-07-04T11:36:27.473-07:00</updated><title type='text'>How to use plug-ins for QTWebKit in Linux</title><content type='html'>Qt 4.6 has  a very nice embedded web-engine component called QTWebKit for browsing web-pages. Unfortunately it does not show flash of media content for that purpose there should be set environment &lt;span style="color: rgb(0, 153, 0);"&gt;QTWEBKIT_PLUGIN_PATH&lt;/span&gt; variable to directory which contains compiled plug-ins (.so file).&lt;br /&gt;&lt;br /&gt;example : &lt;span style="color: rgb(0, 0, 153);"&gt;export QTWEBKIT_PLUGIN_PATH=/home/deimus/flash/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4476252660045845987-4080941024242705623?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/4080941024242705623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2010/07/how-to-use-plug-ins-for-qtwebkit-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/4080941024242705623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/4080941024242705623'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2010/07/how-to-use-plug-ins-for-qtwebkit-in.html' title='How to use plug-ins for QTWebKit in Linux'/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-7308025280311389154</id><published>2010-03-15T11:19:00.000-07:00</published><updated>2010-03-15T11:25:02.742-07:00</updated><title type='text'></title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Linux&lt;/span&gt; Presentation&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Prepared presentation of Linux History, Introduction and Overview for the beginners.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Can be found here. &lt;a style="color: rgb(0, 153, 0);" href="http://www.box.net/shared/ja005m0yuq"&gt;Linux-Introduction.pdf&lt;/a&gt;&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/4476252660045845987-7308025280311389154?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/7308025280311389154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2010/03/linux-presentation-prepared.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/7308025280311389154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/7308025280311389154'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2010/03/linux-presentation-prepared.html' title=''/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-5113806977934838232</id><published>2010-03-08T11:30:00.000-08:00</published><updated>2010-03-08T12:17:29.549-08:00</updated><title type='text'>Integral computation using nVidia CUDA technology</title><content type='html'>Recently I wrote an integral computation program on GPU using nVidia CUDA technology. The acceleration is astonishing for the big accuracy in comparison with the analogue program running on CPU which by the way is provided by Henry Golding and can be found in his personal blog. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However to understand the code you should have some knowledge of nVidia CUDA supporting GPU, which can be founded in nVidia's official &lt;a href="http://developer.nvidia.com/object/cuda_2_3_downloads.html"&gt;webpage&lt;/a&gt;. But for the usage imho it is quiet friendly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;source code&lt;/span&gt;: &lt;a href="http://www.box.net/shared/t8k748f272"&gt;main.cu&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&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/4476252660045845987-5113806977934838232?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/5113806977934838232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2010/03/integral-computation-using-nvidia-cuda.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/5113806977934838232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/5113806977934838232'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2010/03/integral-computation-using-nvidia-cuda.html' title='Integral computation using nVidia CUDA technology'/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-5895568062960288644</id><published>2010-03-03T12:39:00.000-08:00</published><updated>2010-03-03T12:52:54.540-08:00</updated><title type='text'>Compiling CUDA with C/C++</title><content type='html'>Platform: ubuntu 9.10&lt;br /&gt;gcc version: 4.4.1&lt;br /&gt;cuda toolkit: 2.3&lt;br /&gt;&lt;br /&gt;While  compiling .cu (cuda) file with c/c++ code developer usually will get following error.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;/usr/include/c++/4.4/ext/atomicity.h(46): error: identifier "__sync_fetch_and_add" is undefined&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;/usr/include/c++/4.4/ext/atomicity.h(50): error: identifier "__sync_fetch_and_add" is undefined&lt;/span&gt;&lt;/blockquote&gt;It seems still there are problems while compiling cuda with gcc 4.4 and above.&lt;br /&gt;I found only this way to workaround this problem.&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;blockquote&gt;nvcc --device-emulation --compiler-bindir=/usr/bin/gcc-4.3 -arch sm_13 main.cu -o run&lt;/blockquote&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;--device-emulation: for cuda supporting device emulation in case if real hardware is not available.&lt;/li&gt;&lt;li style="color: rgb(0, 0, 0);"&gt;--compiler-bindir=/usr/bin/gcc-4.3: to use gcc version 4.3 this will solve the problem.&lt;/li&gt;&lt;li style="color: rgb(0, 0, 0);"&gt;-arch sm_13: in case if atomic function are used in implementation, compiles with 1.3 cuda supporting hardware&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4476252660045845987-5895568062960288644?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/5895568062960288644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2010/03/compiling-cuda-with-cc.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/5895568062960288644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/5895568062960288644'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2010/03/compiling-cuda-with-cc.html' title='Compiling CUDA with C/C++'/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4476252660045845987.post-5616614564591691485</id><published>2010-02-22T10:14:00.000-08:00</published><updated>2010-02-22T10:17:05.761-08:00</updated><title type='text'>Why I am here ?</title><content type='html'>Just want to share my knowledge !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4476252660045845987-5616614564591691485?l=levonp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://levonp.blogspot.com/feeds/5616614564591691485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://levonp.blogspot.com/2010/02/why-i-am-here.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/5616614564591691485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4476252660045845987/posts/default/5616614564591691485'/><link rel='alternate' type='text/html' href='http://levonp.blogspot.com/2010/02/why-i-am-here.html' title='Why I am here ?'/><author><name>Levon Poghosyan</name><uri>http://www.blogger.com/profile/09192405244350114382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://2.bp.blogspot.com/_aIKSc6vgmSM/S4LGCCRV4PI/AAAAAAAAAAM/oIt5tL-0UgU/S220/19547_109806032363136_100000012183516_265596_3663659_s.jpg'/></author><thr:total>0</thr:total></entry></feed>
