<?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-579310917409728684</id><updated>2011-08-25T16:47:39.889+04:00</updated><title type='text'>ks.vladimir</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ksvladimir.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ksvladimir.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Vladimir Kuznetsov</name><uri>http://www.blogger.com/profile/00885584221893234912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-579310917409728684.post-7751556688623179455</id><published>2009-05-04T01:52:00.003+04:00</published><updated>2009-05-04T02:13:35.747+04:00</updated><title type='text'>Easy TeX parsing (or: TeXpp and plain.tex)</title><content type='html'>Some time ago I have &lt;a href="http://ksvladimir.blogspot.com/2009/03/tex-parsing-texpp.html"&gt;blogged&lt;/a&gt; about &lt;a href="http://code.google.com/p/texpp/"&gt;TeXpp&lt;/a&gt;. Today it have reached a stage when it loads plain.tex (i.e. the source of the plainTeX format) with only one warning (about unimplemented \input command which is not fatal in this case).&lt;br /&gt;&lt;br /&gt;But what do I mean by "loads" ? That is: "parses the file and executes each command in it gathering information about all macro definitions, variable assignments, etc.". With this information TeXpp is able to parse any document typed in plain.tex format (yes, I know, you don't have such documents, neither do I - LaTeX support is coming in a near future).&lt;br /&gt;&lt;br /&gt;To check correctness of parsing, I have enabled all possible trance information in TeX, parsed the document using TeXpp and Knuth's TeX and compared the log files. Actually I have &lt;a href="http://code.google.com/p/texpp/source/browse/#svn/trunk/tests/tex"&gt;55 unit tests&lt;/a&gt; that works exactly the same and proves the TeXpp compatibility with TeX in many corner cases. Another &lt;a href="http://my.cdash.org/index.php?project=TeXpp"&gt;1437 unit tests&lt;/a&gt; are based on real-life documents from &lt;a href="http://arxiv.org/"&gt;arxiv.org&lt;/a&gt; (but currently is this case a test scenario is a bit different).&lt;br /&gt;&lt;br /&gt;That's all for today. Later I will probably blog about TeXpp abilities and how could it be useful for KDE-related projects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/579310917409728684-7751556688623179455?l=ksvladimir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ksvladimir.blogspot.com/feeds/7751556688623179455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=579310917409728684&amp;postID=7751556688623179455' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/7751556688623179455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/7751556688623179455'/><link rel='alternate' type='text/html' href='http://ksvladimir.blogspot.com/2009/05/easy-tex-parsing-or-texpp-and-plaintex.html' title='Easy TeX parsing (or: TeXpp and plain.tex)'/><author><name>Vladimir Kuznetsov</name><uri>http://www.blogger.com/profile/00885584221893234912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-579310917409728684.post-1167973339277875531</id><published>2009-05-01T20:53:00.000+04:00</published><updated>2009-05-01T22:56:48.261+04:00</updated><title type='text'>Translating XML data files: a solution</title><content type='html'>Some time ago I was asked about translations of example files that are bundled with &lt;a href="http://edu.kde.org/step"&gt;Step&lt;/a&gt;. These files are in XML-based format specific to Step and they do contain user-visible strings (notes, user-visible object names). The use of runtime translation mechanisms (for example as described &lt;a href="http://techbase.kde.org/Development/Tutorials/Localization/i18n_Challenges#Translating_Data"&gt;here&lt;/a&gt;) was not an option because the files should be user-editable.&lt;br /&gt;&lt;br /&gt;So the solution was to make a copies of the files for each language and install them to $DATADIR/step/$LANG/examples. Despite being simple, this solution has serious problems:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;as there are no .pot files, translators simply don't know that the files are translatable&lt;/li&gt;&lt;li&gt;translators should deal with strange unfamiliar format, they can't use convenient tools like Lokalize&lt;/li&gt;&lt;li&gt;keeping translations in sync is really hard&lt;/li&gt;&lt;/ul&gt;A better solution should obviously be based on .po files. That is:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Extract strings from XML file to .po file (in Messages.sh script)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The .po files will be handled by translators as usual&lt;/li&gt;&lt;li&gt;Merge strings back to XML files when building l10n module&lt;/li&gt;&lt;/ol&gt;The idea is not new and several tools implementing it already exist (namely extractrc script from KDE and intltool from Gnome). However these tools are tailored for a specific set of formats and can't be easily configured to work with new formats.&lt;br /&gt;&lt;br /&gt;Instead of implementing something just for Step, I have written a more generic solution: &lt;a href="http://websvn.kde.org/trunk/KDE/kdeedu/step/step/data/extractxml?view=markup"&gt;extractxml&lt;/a&gt;. This is a rather simple python script that can be used to translate a variety of XML-based formats. The usage is simple, for example a command:&lt;br /&gt;&lt;pre&gt;$ extractxml --context='%(tag)s' --tag=name --tag=text \&lt;br /&gt;             --extract test*.xml --xgettext --output=test.po&lt;br /&gt;&lt;/pre&gt;will extract the content of "name" and "text"&lt;name&gt;&lt;text&gt; tags from all test*.xml files into test.po file. The command:&lt;/text&gt;&lt;br /&gt;&lt;pre&gt;$ extractxml --context='%(tag)s' --tag=name --tag=text \&lt;br /&gt;             --translate --po-file=test.po test*.xml --output-dir=i18n&lt;br /&gt;&lt;/pre&gt;will merge the translated strings back and save the translated files into i18n subdirectory.&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;br /&gt;The extractxml has some more features, just run "extractxml --help" to see them all. For example it is capable to match tags by regular expressions, strip and unquote the strings, recursively handle embedded XML fragments (for example rich text generated by Qt Designer).&lt;br /&gt;&lt;br /&gt;&lt;/name&gt;A complete example of incorporating extractxml info a KDE l10n subsystem is available in &lt;a href="http://websvn.kde.org/trunk/KDE/kdeedu/step/step/data/"&gt;trunk/KDE/kdeedu/step/step/data/&lt;/a&gt; (take a look at Messages.sh, CMakeLists.txt and */CMakeLists.txt files).&lt;br /&gt;&lt;name&gt;&lt;br /&gt;Currently extractxml lives in trunk/kdeedu/step/step/data, but in case there will be some interest in it, I will be happy to move it to a more prominent location.&lt;br /&gt;&lt;/name&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/579310917409728684-1167973339277875531?l=ksvladimir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ksvladimir.blogspot.com/feeds/1167973339277875531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=579310917409728684&amp;postID=1167973339277875531' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/1167973339277875531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/1167973339277875531'/><link rel='alternate' type='text/html' href='http://ksvladimir.blogspot.com/2009/05/translating-xml-data-files-solution.html' title='Translating XML data files: a solution'/><author><name>Vladimir Kuznetsov</name><uri>http://www.blogger.com/profile/00885584221893234912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-579310917409728684.post-3113167201033700304</id><published>2009-03-07T23:16:00.000+03:00</published><updated>2009-03-08T00:22:04.955+03:00</updated><title type='text'>TeX parsing: TeXpp</title><content type='html'>In the project I'm currently working on we need to do some automatic transformation of LaTeX documents. The most important requirement is simple: never break neither meaning nor formatting of the document. Unfortunately this requirement is also the most difficult to fulfill.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;In spite of big popularity of TeX there are not so many libraries for parsing it and none of that libraries fulfill stated requirement. The reason for it is simple: TeX format is extremely hard to parse because its grammar is context-dependent. You can never be sure about meaning of any given character without parsing and executing all commands in the document before that character.&lt;br /&gt;&lt;br /&gt;The first attempt was to use LaTeX::TOM perl module and it somehow worked, but with many bugs and limitations. Then there was an idea to modify original tex program to extract information we need but it turned out to be non-manageable task in reasonable timeframe. It seems that not so many people are dare enough to touch that code: not only it is written in not-so-popular and somehow cryptic pseudo pascal, but the whole organization of the code is very different from modern programs. I'm not saying its bad, but its very unfamiliar and hard to work with for modern programmers.&lt;br /&gt;&lt;br /&gt;So I've decided to implement my own solution. For now I have a lexer and a parser that builds basic document tree for tex documents. Currently only a few TeX commands are supported (actually the whole list is: \relax, \par, \show and \let) but the framework is ready and new commands can (and will) be added very easily. The resulting document tree allows reconstruction of original source document as well as modifying parts of it.&lt;br /&gt;&lt;br /&gt;Today I've released the whole code at &lt;a href="http://code.google.com/p/texpp/"&gt;http://code.google.com/p/texpp/&lt;/a&gt;. How that code can be used ? Think about full intelligent TeX code completion, online error detection, TeX debugging, etc. Kile developers ?&lt;br /&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/579310917409728684-3113167201033700304?l=ksvladimir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ksvladimir.blogspot.com/feeds/3113167201033700304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=579310917409728684&amp;postID=3113167201033700304' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/3113167201033700304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/3113167201033700304'/><link rel='alternate' type='text/html' href='http://ksvladimir.blogspot.com/2009/03/tex-parsing-texpp.html' title='TeX parsing: TeXpp'/><author><name>Vladimir Kuznetsov</name><uri>http://www.blogger.com/profile/00885584221893234912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-579310917409728684.post-4890592508921985877</id><published>2008-06-30T11:42:00.000+04:00</published><updated>2008-06-30T13:59:11.602+04:00</updated><title type='text'>Converting any window into plasmoid</title><content type='html'>Take a look at the following screenshots:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_p53UPoma0UI/SGiWqocZHsI/AAAAAAAAAAM/0ro3anqEaiI/s1600-h/pasmoids1.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_p53UPoma0UI/SGiWqocZHsI/AAAAAAAAAAM/0ro3anqEaiI/s320/pasmoids1.png" alt="" id="BLOGGER_PHOTO_ID_5217585827463896770" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_p53UPoma0UI/SGilaqOaaWI/AAAAAAAAAAU/C91YHpFdNS4/s1600-h/pasmoids2.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_p53UPoma0UI/SGilaqOaaWI/AAAAAAAAAAU/C91YHpFdNS4/s320/pasmoids2.png" alt="" id="BLOGGER_PHOTO_ID_5217602045738641762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Besides familiar Clock and Calculator you can see several new plasmoids here:&lt;ul&gt;&lt;li&gt;Konsole&lt;/li&gt;&lt;li&gt;MPlayer&lt;/li&gt;&lt;li&gt;Speedcrunch calculator&lt;/li&gt;&lt;li&gt;&lt;a href="http://edu.kde.org/step"&gt;Step&lt;/a&gt; physical simulator&lt;/li&gt;&lt;/ul&gt;No, I have not rewrote all that apps as plasmoids. Instead I've wrote an applet that allows you to convert any running application into plasmoid. Currently it works using XEmbed protocol and therefore have lots of problems:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You can't rotate these plasmoids and they don't work correctly with ZUI (however the latter can still be improved a bit)&lt;/li&gt;&lt;li&gt;Z-order of plasmoids is not respected (i.e. in case you have several overlapping plasmoids)&lt;/li&gt;&lt;li&gt;Switching between Desktop and Dashboard is not very smooth: embedded applications are only repainted after several-seconds delay&lt;/li&gt;&lt;/ul&gt;All these problems can be fixed by using Composite extension (and input redirection) instead of XEmbed but this will probably require some cooperation with KWin and will only work when Composite is enabled.&lt;br /&gt;&lt;br /&gt;There is another problem: currently you have to manually re-configure all window-embedding plasmoids after restarting plasma. For KDE applications this can probably be partly fixed by using KDE session management, for other applications one can allow the user to setup command line of the application to start.&lt;br /&gt;&lt;br /&gt;Despite all current limitation, I think this approach still has its own use-cases, for example when you want quick access to some of your applications from Dashboard (for example Konsole) or if you want something not-yet-available as plasmoid on your desktop (for example video player, advanced calculator, web-browser with your webmail, a game from kdegames, googleearth, ...).&lt;br /&gt;&lt;br /&gt;If you still want to try it, the code is available in &lt;a href="http://websvn.kde.org/trunk/playground/base/plasma/applets/embed-win/"&gt;playground/base/plasma/applets/embed-win&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/579310917409728684-4890592508921985877?l=ksvladimir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ksvladimir.blogspot.com/feeds/4890592508921985877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=579310917409728684&amp;postID=4890592508921985877' title='30 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/4890592508921985877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/4890592508921985877'/><link rel='alternate' type='text/html' href='http://ksvladimir.blogspot.com/2008/06/converting-any-window-into-plasmoid.html' title='Converting any window into plasmoid'/><author><name>Vladimir Kuznetsov</name><uri>http://www.blogger.com/profile/00885584221893234912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_p53UPoma0UI/SGiWqocZHsI/AAAAAAAAAAM/0ro3anqEaiI/s72-c/pasmoids1.png' height='72' width='72'/><thr:total>30</thr:total></entry><entry><id>tag:blogger.com,1999:blog-579310917409728684.post-3966362880441763655</id><published>2007-06-28T16:29:00.000+04:00</published><updated>2007-06-28T16:56:52.171+04:00</updated><title type='text'>Exams are over</title><content type='html'>Last two weeks I've spend almost all time preparing to my last exam and writing my diploma. Yesterday I've defended my diploma and got bachelor degree in physics. So now I have a lot of time and motivation to work on Step.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/579310917409728684-3966362880441763655?l=ksvladimir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ksvladimir.blogspot.com/feeds/3966362880441763655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=579310917409728684&amp;postID=3966362880441763655' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/3966362880441763655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/3966362880441763655'/><link rel='alternate' type='text/html' href='http://ksvladimir.blogspot.com/2007/06/exams-are-over.html' title='Exams are over'/><author><name>Vladimir Kuznetsov</name><uri>http://www.blogger.com/profile/00885584221893234912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-579310917409728684.post-7685724761952990802</id><published>2007-06-11T21:54:00.000+04:00</published><updated>2007-06-11T22:17:08.587+04:00</updated><title type='text'>Annotations for objects</title><content type='html'>I've just implemented basic text annotations for &lt;a href="http://edu.kde.org/step"&gt;Step&lt;/a&gt;. Now you can add text items to the scene, very soon you will be able to associate annotations with the objects. What I still can't decide is the appearance of the annotations. I see two possible options:&lt;br /&gt;- text in a frame (like KNotes) resizeable by mouse.&lt;br /&gt;- free-running text without a frame dynamically resizeable as you type&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/579310917409728684-7685724761952990802?l=ksvladimir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ksvladimir.blogspot.com/feeds/7685724761952990802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=579310917409728684&amp;postID=7685724761952990802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/7685724761952990802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/7685724761952990802'/><link rel='alternate' type='text/html' href='http://ksvladimir.blogspot.com/2007/06/annotations-for-objects.html' title='Annotations for objects'/><author><name>Vladimir Kuznetsov</name><uri>http://www.blogger.com/profile/00885584221893234912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-579310917409728684.post-8032371374385736262</id><published>2007-06-06T15:49:00.000+04:00</published><updated>2007-06-06T16:33:51.065+04:00</updated><title type='text'>Editing and threading</title><content type='html'>Recently I've implemented threading in &lt;a href="http://edu.kde.org/step"&gt;Step&lt;/a&gt;. This is (still) not parallel computation, but doing all calculations in one dedicated thread to keep GUI responsive and allow the user to abort calculations at any time.&lt;br /&gt;&lt;br /&gt;In Step the user can edit the scene while simulation is running but this can't be done in the middle of timestep. So I need to use mutex to serialize access to the scene: the mutex is locked by calculating thread while performing timestep and by GUI thread while altering objects. The problem arises when calculation of one timestep becomes too long (for example if user sets too low tolerance): if GUI tries to lock the mutex it becomes unresponsive till the end of the timestep and the user can't abort the calculation !&lt;br /&gt;&lt;br /&gt;The obvious solution is to abort current timestep as soon as the user starts altering the scene and restart it later. But this can slow down the simulation and make it not smooth. My solution is to first try locking with timeout and abort the timestep only if locking fails:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// Try to lock but do not wait mode than one frame&lt;br /&gt;if(!mutex-&gt;tryLock(1000/_simulationFps)) {&lt;br /&gt; abortCurrentFrame();&lt;br /&gt; mutex-&gt;lock();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;With such approach simulation will be slowed down only if it is already slow (i.e. when simulation of one frame simulation takes longer then 1/FPS). In the other case simulation will proceed smoothly and user actions will be delayed only slightly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/579310917409728684-8032371374385736262?l=ksvladimir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ksvladimir.blogspot.com/feeds/8032371374385736262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=579310917409728684&amp;postID=8032371374385736262' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/8032371374385736262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/8032371374385736262'/><link rel='alternate' type='text/html' href='http://ksvladimir.blogspot.com/2007/06/editing-and-threading.html' title='Editing and threading'/><author><name>Vladimir Kuznetsov</name><uri>http://www.blogger.com/profile/00885584221893234912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-579310917409728684.post-7919700203217753210</id><published>2007-05-29T20:37:00.000+04:00</published><updated>2007-05-29T20:51:07.198+04:00</updated><title type='text'>Step in EBN</title><content type='html'>Today I've noticed that Step is in EBN and I'm very happy with it (I've always thought that playgound are not there) ! There are some issues reported by Krazy which I'll eventually fix. The only bad thing is that for some reason EBN ignores API documentation for StepCore. Or maybe I need to do something special for EBN to see it ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/579310917409728684-7919700203217753210?l=ksvladimir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ksvladimir.blogspot.com/feeds/7919700203217753210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=579310917409728684&amp;postID=7919700203217753210' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/7919700203217753210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/7919700203217753210'/><link rel='alternate' type='text/html' href='http://ksvladimir.blogspot.com/2007/05/step-in-ebn.html' title='Step in EBN'/><author><name>Vladimir Kuznetsov</name><uri>http://www.blogger.com/profile/00885584221893234912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-579310917409728684.post-5972643680890652435</id><published>2007-05-29T19:41:00.000+04:00</published><updated>2007-05-29T20:36:21.024+04:00</updated><title type='text'>Collision handling</title><content type='html'>Recently &lt;a href="http://edu.kde.org/step"&gt;Step&lt;/a&gt; has finally got collision handling. There are still lots to do but basic things are working: you can create some polygons, assign them velocities and see them collide. It has got more time then I expect mainly because of Real Life (specifically my job and university).&lt;br /&gt;&lt;br /&gt;After reading lots of papers on collision detection and checking how it is implemented in &lt;a href="http://ode.org/"&gt;ODE&lt;/a&gt; and &lt;a href="http://www.continuousphysics.com/Bullet"&gt;Bullet&lt;/a&gt; I've decided to use Gilbert-Johnson-Keerthi algorithm for collision detection and Dantzig LCP solver for constraints (but as with ODE solvers collision solvers will be easily swappable). The main choice criteria was accuracy of the algorithm and possibility to add error estimation. Implementing GJK was quite easy, extending it to provide full collision manifold instead of one arbitrary collision point was slightly harder because of various subtle numerical problems.&lt;br /&gt;&lt;br /&gt;Next items on my TODO list is constraint solver and performance optimizations for collision solver (by broadphase filtering and using coherency between adjacent time steps). In parallel with it I'll start to work on something from my SoC program to be in time with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/579310917409728684-5972643680890652435?l=ksvladimir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ksvladimir.blogspot.com/feeds/5972643680890652435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=579310917409728684&amp;postID=5972643680890652435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/5972643680890652435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/5972643680890652435'/><link rel='alternate' type='text/html' href='http://ksvladimir.blogspot.com/2007/05/collision-handling.html' title='Collision handling'/><author><name>Vladimir Kuznetsov</name><uri>http://www.blogger.com/profile/00885584221893234912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-579310917409728684.post-4031602409525992415</id><published>2007-04-13T14:03:00.000+04:00</published><updated>2007-04-13T14:59:29.250+04:00</updated><title type='text'>GSoC: Step is accepted !</title><content type='html'>So &lt;a href="http://code.google.com/soc/kde/appinfo.html?csaid=D999CC3F6794C985"&gt;my application&lt;/a&gt; for GSoC is accepted. This means that &lt;a href="http://edu.kde.org/step/"&gt;Step&lt;/a&gt; will see a lot of improvements this summer and I hope KDE as a whole will benefit from it too. Thanks a lot for all who helped me !&lt;br /&gt;I've just created a &lt;a href="http://edu.kde.org/step/gsoc.php"&gt;page&lt;/a&gt; to monitor progress of my project, take a look at it if you want to see more details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/579310917409728684-4031602409525992415?l=ksvladimir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ksvladimir.blogspot.com/feeds/4031602409525992415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=579310917409728684&amp;postID=4031602409525992415' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/4031602409525992415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/4031602409525992415'/><link rel='alternate' type='text/html' href='http://ksvladimir.blogspot.com/2007/04/gsoc-step-is-accepted.html' title='GSoC: Step is accepted !'/><author><name>Vladimir Kuznetsov</name><uri>http://www.blogger.com/profile/00885584221893234912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-579310917409728684.post-4321818330705334324</id><published>2007-03-23T01:19:00.000+03:00</published><updated>2007-03-23T01:41:15.394+03:00</updated><title type='text'>I'm working on Step again</title><content type='html'>Two days ago I've finally submitted my SoC proposal about Step. It has got some time to write it, but even if I won't be accepted my proposal will still be useful as a roadmap for Step (but I will have to scale times in it taking into account my summer job).&lt;br /&gt;&lt;br /&gt;So, now Step can simulate 2d rigid bodies, its time to start the most challenging part: collision detection and constraint solving. The former is not very hard but the latter is quite interesting. There are several known algorithms for it with their props and cons. ODE uses Dantzig LCP, Bullet - sequential impulse relaxation but I've heard they want to replace it with Featherstone's algorithm. Of course 2d case is really a lot easier than 3d and my focus is on accuracy rather then on performance... Anyway this task is really interesting and I'm looking forward to finish this post and start working on it !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/579310917409728684-4321818330705334324?l=ksvladimir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ksvladimir.blogspot.com/feeds/4321818330705334324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=579310917409728684&amp;postID=4321818330705334324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/4321818330705334324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/4321818330705334324'/><link rel='alternate' type='text/html' href='http://ksvladimir.blogspot.com/2007/03/im-working-on-step-again.html' title='I&apos;m working on Step again'/><author><name>Vladimir Kuznetsov</name><uri>http://www.blogger.com/profile/00885584221893234912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-579310917409728684.post-2124369835466531896</id><published>2007-03-05T11:24:00.000+03:00</published><updated>2007-03-05T12:23:15.251+03:00</updated><title type='text'>My first blog</title><content type='html'>So I've finally started my own blog. Actually I'm not a big fan of writing but I need a place to post news about &lt;a href="http://stepcore.sf.net/"&gt;Step&lt;/a&gt; development.&lt;br /&gt;&lt;br /&gt;I hope there soon will be nice pages about Step on edu.kde.org (as suggested by and with help of Anne-Marie Mahfouf).  Some time later I'm going to do another pre-release of Step - last release on sourceforge is quite outdated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/579310917409728684-2124369835466531896?l=ksvladimir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ksvladimir.blogspot.com/feeds/2124369835466531896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=579310917409728684&amp;postID=2124369835466531896' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/2124369835466531896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/579310917409728684/posts/default/2124369835466531896'/><link rel='alternate' type='text/html' href='http://ksvladimir.blogspot.com/2007/03/my-first-blog.html' title='My first blog'/><author><name>Vladimir Kuznetsov</name><uri>http://www.blogger.com/profile/00885584221893234912</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
