tag:blogger.com,1999:blog-352393462024-03-08T01:41:23.286+01:00TronProg: Programming and ComputersTalking about Programming, Computers, and Computer Science stuff in general.bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.comBlogger151125tag:blogger.com,1999:blog-35239346.post-55603124620140934802012-11-07T09:40:00.000+01:002012-11-07T09:40:07.266+01:00This blog is movingMy computer blog is now moving to my new home page, <a href="http://www.lorenzobettini.it/">http://www.lorenzobettini.it</a>, however, all the posts already available in this blog will not be removed.bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com0tag:blogger.com,1999:blog-35239346.post-23224128945485513202012-05-22T19:07:00.001+02:002012-05-22T19:07:54.985+02:00The JvmModelInferrer, the debugger and Xbase in Xtext 2.3See the original post here:<br />
<br />
<a href="http://www.rcp-vision.com/?p=4089&lang=en">The JvmModelInferrer, the debugger and Xbase in Xtext 2.3</a>bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com0tag:blogger.com,1999:blog-35239346.post-90998863785333160962012-05-09T21:02:00.000+02:002012-05-09T21:02:27.120+02:00Eclipse internal Web Browser in Kubuntu Precise Pangoline 12.04This can be seen as a sort of follow-up of my previous post, <a href="http://tronprog.blogspot.it/2010/05/eclipse-internal-web-browser-in-ubuntu.html" target="_blank">Eclipse internal Web Browser in Ubuntu Lucid</a>: after installing Kubuntu Precise Pangolin 12.04 the internal browser of Eclipse stopped working. In particular, when using Mylyn Gerrit connector (relying on OpenID authentication, which requires the eclipse internal browser) I got this error<br />
<blockquote class="tr_bq">
org.eclipse.swt.SWTException: Failed to execute runnable (org.eclipse.swt.SWTError: No more handles [Unknown Mozilla path (MOZILLA_FIVE_HOME not set)])</blockquote>
and indeed, by looking at the preferences corresponding to the Web browser I cannot select the internal browser:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg6Fgo8PLByXXaXAL20nOI4VQCE-xUgS8zMewUIDWPyQ_P2b_N8a00VQlB3ODLA1TUz-nmEkR4JcHfpCvmahvp_3_iXkcI1XXBoH7bSpRkJNYWyLb3NYYs0XM0Bv6knZdwDfK1/s1600/web_browser_preferences.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="314" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg6Fgo8PLByXXaXAL20nOI4VQCE-xUgS8zMewUIDWPyQ_P2b_N8a00VQlB3ODLA1TUz-nmEkR4JcHfpCvmahvp_3_iXkcI1XXBoH7bSpRkJNYWyLb3NYYs0XM0Bv6knZdwDfK1/s320/web_browser_preferences.png" width="320" /></a></div>
Last time, I had solved this problem by installing the <b>xulrunner</b> package, but, sad to hear, this package <a href="https://lists.ubuntu.com/archives/ubuntu-devel/2011-May/033229.html" target="_blank">has been dropped since Oneiric</a>!<br />
<br />
Fortunately, we can rely on another package:<br />
<blockquote class="tr_bq">
sudo apt-get install <b>libwebkitgtk-1.0-0</b></blockquote>
and you'll enjoy Eclipse internal web browser again! :)<br />
<br />bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com7tag:blogger.com,1999:blog-35239346.post-22273217747874666492012-02-03T11:54:00.000+01:002012-02-03T11:55:18.830+01:00Closing the Eclipse Welcome screen programmaticallyWhen writing Junit plugin tests in Eclipse I wanted to close the welcome page programmatically before starting the tests; looks like it's pretty easy :) Just use this @BeforeClass static method and you'll be fine!<br /><br /> <pre><br /> @BeforeClass<br /> public static void closeWelcome() {<br /> final IIntroManager introManager = <br /> PlatformUI.getWorkbench().getIntroManager();<br /> IIntroPart part = introManager.getIntro();<br /> introManager.closeIntro(part);<br /> }</pre>bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com1tag:blogger.com,1999:blog-35239346.post-82535119955598623542011-12-26T10:43:00.001+01:002011-12-26T10:45:06.720+01:00Xtext 2.1: using Xbase variablesSee the original post here:<br /><br /><a href="http://www.rcp-vision.com/?p=1796">Xtext 2.1: using Xbase variables</a><br /><br /><p></p><blockquote><p>In this post, I’d like to continue to inspect how to use only a small part of Xbase and still have the control on the generation part: in particular (for other projects) I would like to retain the control on the generation for my model, while relying on the Xbase generation for the Xbase parts. Thus, in this post I’ll describe:</p> <ul><li>how to integrate Xbase variables (<em>XVariableDeclaration</em>) and expressions (<em>XExpression</em>) in your DSL</li><li>how to extend Xbase scoping for making the variables visible in the expressions</li><li>write a generator for your DSL and reuse the XbaseCompiler for the code of XVariableDeclaration and XExpressions</li></ul></blockquote>bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com0tag:blogger.com,1999:blog-35239346.post-19995915748237589152011-11-23T15:01:00.002+01:002011-11-23T15:04:12.900+01:00Xtext 2.1: using Xbase expressionsSee the whole blog post here:<br /><br /><a href="http://www.rcp-vision.com/?p=1640">Xtext 2.1: using Xbase expressions</a><br /><br /><blockquote>I’d like to inspect how to use only a small part of Xbase and still have the control on the generation part: in particular (for other projects) I would like to retain the control on the generation for my model, while relying on the Xbase generation for the Xbase parts. Thus, in this post I’ll describe: <ul><li>how to integrate Xbase expressions (XExpression) in your DSL</li><li>write a generator for your DSL and reuse the XbaseCompiler for the code of XExpressions</li></ul></blockquote>bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com0tag:blogger.com,1999:blog-35239346.post-59583498972885175422011-11-21T18:23:00.001+01:002011-11-23T15:03:12.423+01:00Using JVM Types in Xtext 2.1 and the ImportManager<a href="http://www.rcp-vision.com/?p=1573&amp;lang=en">Using JVM Types in Xtext 2.1 and the ImportManager</a>bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com0tag:blogger.com,1999:blog-35239346.post-18155919182175336572011-10-30T15:43:00.002+01:002011-10-30T15:46:14.456+01:00Testing the Eclipse StatusLineManagerHere's the link to a new post, where I explain how to test the current text of the Status Line in Eclipse<br /><br /><a href="http://www.rcp-vision.com/?p=1437">Testing the Eclipse StatusLineManager</a>bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com0tag:blogger.com,1999:blog-35239346.post-56775659556624311862011-05-25T13:53:00.004+02:002011-05-25T14:06:12.692+02:00PhpBibliography goes InternationalThe new version of <a href="http://phpbibliography.sourceforge.net/">PhpBibliography</a>, 1.1.1, provides a new feature: Internationalization!<br /><br />2 languages, besides English, are now supported: Italian and French.<br /><br />I must thank <a href="http://www.onera.fr/staff/david-chemouil/">David CHEMOUIL</a>, who opened a <a href="https://sourceforge.net/tracker/?func=detail&aid=3279344&group_id=166172&atid=837965">feature request</a>, and provided the French translation (of course, I did the Italian one :)<br /><br />Now, the phpbibliography user can choose the language using the three flags on the top right corner; switching language will lead you to the same page you were visiting but in the selected language. The chosen language will be remembered, so you can keep surfing (or editing) the site with the selected language.<br /><br />Here are some screenshots:<br /><br /><a href="http://2.bp.blogspot.com/-1Tw9S_OpnXo/TdzwbEPDeMI/AAAAAAAAB7E/b6Bvppnj2M4/s1600/phpbibliography-lang.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 189px;" src="http://2.bp.blogspot.com/-1Tw9S_OpnXo/TdzwbEPDeMI/AAAAAAAAB7E/b6Bvppnj2M4/s400/phpbibliography-lang.png" alt="" id="BLOGGER_PHOTO_ID_5610623583580813506" border="0" /></a><br /><a href="http://3.bp.blogspot.com/-5ZHf-8FApKo/TdzwhIHs5DI/AAAAAAAAB7M/ZNVjSGPsdLk/s1600/phpbibliography-lang1.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 190px;" src="http://3.bp.blogspot.com/-5ZHf-8FApKo/TdzwhIHs5DI/AAAAAAAAB7M/ZNVjSGPsdLk/s400/phpbibliography-lang1.png" alt="" id="BLOGGER_PHOTO_ID_5610623687702930482" border="0" /></a><br /><a href="http://3.bp.blogspot.com/-iGd9kTv85qw/Tdzwm3zl7VI/AAAAAAAAB7U/YzB21isP3zk/s1600/phpbibliography-lang2.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 188px;" src="http://3.bp.blogspot.com/-iGd9kTv85qw/Tdzwm3zl7VI/AAAAAAAAB7U/YzB21isP3zk/s400/phpbibliography-lang2.png" alt="" id="BLOGGER_PHOTO_ID_5610623786402835794" border="0" /></a>bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com3tag:blogger.com,1999:blog-35239346.post-55888496176329399382011-05-24T11:43:00.007+02:002011-05-24T11:56:43.273+02:00Making microphone work in Kubuntu Natty<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5SsDSuQtUByxPuUGhBj2mjS6mhOnOJtU_d0KNCD2r0LPu2UOs1hf7Se2MEFE8WCKW7GF2T95uUn-lU5DR09vM2PnybN1rLgt3ty9hTyQIirMqiEwaChPf0J2MiVR4JCJf3n-W/s1600/kubuntu-natty-narwhal-release-1.jpg"><img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 86px; height: 86px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5SsDSuQtUByxPuUGhBj2mjS6mhOnOJtU_d0KNCD2r0LPu2UOs1hf7Se2MEFE8WCKW7GF2T95uUn-lU5DR09vM2PnybN1rLgt3ty9hTyQIirMqiEwaChPf0J2MiVR4JCJf3n-W/s200/kubuntu-natty-narwhal-release-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5610217058726971474" border="0" /></a>After I switched to Kubuntu Natty 11.04, my microphone stopped working (especially in Skype). I tried to adjust the microphone settings in Phonon System Settings, but, besides having too many devices to choose from, that settings dialog seems to have a <a href="https://bugs.launchpad.net/ubuntu/+source/phonon/+bug/769274">bug which prevents the preferences to being saved</a>. Not to mention that there is no way to test the input device from that setting dialog!<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkthmc8LBnZgKcjIzcyPcf3TqLO_CXRLIf1RRYHXs0XPts5ifruul3fs4w9E9gt89anKMgA005xiLOks3I-g1fNWcFFZI4SVWEWXYS0OqthmoKkQ0HQa_-5FQ0iIInYzTlhxz/s1600/phonon.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 306px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkthmc8LBnZgKcjIzcyPcf3TqLO_CXRLIf1RRYHXs0XPts5ifruul3fs4w9E9gt89anKMgA005xiLOks3I-g1fNWcFFZI4SVWEWXYS0OqthmoKkQ0HQa_-5FQ0iIInYzTlhxz/s400/phonon.png" alt="" id="BLOGGER_PHOTO_ID_5610216767743793762" border="0" /></a>Luckily, in that bug report I also found the solution to have microphone work!<br /><br />The solution consists in installing the package <a href="http://0pointer.de/lennart/projects/pavucontrol/">pavucontrol</a>, which provides a comfortable <span style="font-style: italic;">PulseAudio Volume Control dialog</span>, which also gives you immediate feedback to see whether the microphone is working, and reduces the number of devices to choose from!<br /><br />After you installed that package, Skype options dialog presents a button to open that volume control dialog<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi3ReyHXtxnOhcgyJVdO_JsbeufF8hdNCsYMp0fvF0DJ0k2oPVk5WU_fbDpaJOC6jFBPdOLSudB7JZy-XiMbus7ulUcc8y7a5XI66gL8ZXOenUXYKGgcRsMXnlBDmsJqlMGIeS/s1600/skype-options.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 268px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi3ReyHXtxnOhcgyJVdO_JsbeufF8hdNCsYMp0fvF0DJ0k2oPVk5WU_fbDpaJOC6jFBPdOLSudB7JZy-XiMbus7ulUcc8y7a5XI66gL8ZXOenUXYKGgcRsMXnlBDmsJqlMGIeS/s400/skype-options.png" alt="" id="BLOGGER_PHOTO_ID_5610218147935384946" border="0" /></a><br />If you click the button you'll get the pavucontrol dialog, and in "Input Devices" tab you can choose the input device from the list and instantly check whether that's the right device: just speak in the microphone, and see whether the horizontal bar moves while you're speaking.<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgYrDd0L6eN_kV8s7V38a80i6PnrpWJWmHTSbn-AZ825w9hZ63rvudG5VNTlea-KztvgGMJ1TfiSDdXk0M9QPnaj6X0eY07E1CkAoWO1YOQhk5SKl9hQAbtDVvXVlRc2kIi5NV/s1600/pavucontrol.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 339px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgYrDd0L6eN_kV8s7V38a80i6PnrpWJWmHTSbn-AZ825w9hZ63rvudG5VNTlea-KztvgGMJ1TfiSDdXk0M9QPnaj6X0eY07E1CkAoWO1YOQhk5SKl9hQAbtDVvXVlRc2kIi5NV/s400/pavucontrol.png" alt="" id="BLOGGER_PHOTO_ID_5610218948967721634" border="0" /></a><br />That's all! Now you're microphone is set correctly. :)bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com19tag:blogger.com,1999:blog-35239346.post-46798850848738372852011-05-22T12:47:00.014+02:002011-05-22T15:39:26.476+02:00Using Savannah with Mylyn<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_xXu7vyGKMzndQFx_4KCfBhQifKmcoZZuRwb5KIBhURSbw5DsBSvJfF2okiqvvtbqTKRXe5BWyI22zb-g7E-SMttiaDy2Ibvg01fMyWkMzHKXbpjgoIMew2RSTBhPlPrfP4qt/s1600/savannah.png"><img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 148px; height: 125px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_xXu7vyGKMzndQFx_4KCfBhQifKmcoZZuRwb5KIBhURSbw5DsBSvJfF2okiqvvtbqTKRXe5BWyI22zb-g7E-SMttiaDy2Ibvg01fMyWkMzHKXbpjgoIMew2RSTBhPlPrfP4qt/s200/savannah.png" alt="" id="BLOGGER_PHOTO_ID_5609531920811586210" border="0" /></a>The GNU software I maintain, <a href="http://www.gnu.org/software/src-highlite/">Source-Highlight</a>, <a href="http://www.gnu.org/software/gengetopt/">Gengetopt</a> and <a href="http://www.gnu.org/software/gengen/">Gengen</a>, are hosted on <a href="http://savannah.gnu.org/">Savannah</a>, which has its own bug tracking system. Recently I've started to use the wonderful <a href="http://www.eclipse.org/mylyn/">Mylyn</a> tool under Eclipse for but and feature tracking (in general, "tasks"), and I wanted to use it also with Savannah, but since there is no specific connector, we can use the generic web connector (actually, having a specific connector would be better, but for the moment, that's better than nothing ;)<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrpZpXG_pLnrqIbCNzMu4wFOHxIA9xYFAjFlfK1q8kt33mlhWsn_z6RplPC0oT2K7C4mUCHp-76p7vdxk7CZEdQ9CID5DpKfSJpJNOX4gRO5rr_R8vU6xZbWPAcebBeMEshhho/s1600/mylyn-logo.png"><img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 48px; height: 48px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrpZpXG_pLnrqIbCNzMu4wFOHxIA9xYFAjFlfK1q8kt33mlhWsn_z6RplPC0oT2K7C4mUCHp-76p7vdxk7CZEdQ9CID5DpKfSJpJNOX4gRO5rr_R8vU6xZbWPAcebBeMEshhho/s200/mylyn-logo.png" alt="" id="BLOGGER_PHOTO_ID_5609532066467217362" border="0" /></a>Since there is not a template ready to use for accessing Savannah from Mylyn, I thought I could blog about my experience, hoping that it's useful to others.<br /><br />First of all, you need mylyn in eclipse together with its ui functionalities (but if you downloaded an eclipse distribution you'll likely have it already); then you need to install the <span style="font-weight: bold;">Web Templates Connector</span>, from the update site <span style="font-weight: bold;">http://download.eclipse.org/tools/mylyn/update/incubator</span> (add a repository)<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2el0wMbk6yqxhuQXuKDvpcmWvKfBZ5oolRZ3wa2X8Sr6ZRDqO54SavtV54YtR2VvJzcFtmwrWcg0tZn0AV2J50LxH9ZfWUxKNMAoSNV7W127gbf7aBw_4yv90AQNFIpeAUVV2/s1600/savannah-mylyn-install.jpeg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 151px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2el0wMbk6yqxhuQXuKDvpcmWvKfBZ5oolRZ3wa2X8Sr6ZRDqO54SavtV54YtR2VvJzcFtmwrWcg0tZn0AV2J50LxH9ZfWUxKNMAoSNV7W127gbf7aBw_4yv90AQNFIpeAUVV2/s400/savannah-mylyn-install.jpeg" alt="" id="BLOGGER_PHOTO_ID_5609532542412722754" border="0" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOT-jVYj9GB24zQaKZHX7t6mVZ_FIroJh_Q56ZyQfnK1UNSlseoYQEwjBY86b2dVUw3pI1keUGyzfYbg7vB4KaFt2OYVUpkaA_rff9abyfYp0wCC4_8-M5Q1hdl4-cOI3F96MW/s1600/savannah-mylyn-install.jpeg"><br /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAoaasnlfEHAFasX4Yf5-ezEliJJqdiBVXTYZuH9X9Fh1XxknYI9c4FH7XpPcldAobU85AU4h3RVoJ8xMu8bpLH1IdWhBk4oWj4H66uxxGGfGXIpDxDub0GZD5chFMkx-QMtgP/s1600/savannah-mylyn-install1.jpeg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 298px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAoaasnlfEHAFasX4Yf5-ezEliJJqdiBVXTYZuH9X9Fh1XxknYI9c4FH7XpPcldAobU85AU4h3RVoJ8xMu8bpLH1IdWhBk4oWj4H66uxxGGfGXIpDxDub0GZD5chFMkx-QMtgP/s400/savannah-mylyn-install1.jpeg" alt="" id="BLOGGER_PHOTO_ID_5609494422088590642" border="0" /></a><br />Then, after you restarted eclipse, open the <span style="font-weight: bold;">Task Repositories View</span>, choose <span style="font-weight: bold;">Add Task Repository</span>, and select <span style="font-weight: bold;">Web Template</span>,<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiieYrfUbbqOjEa0v3G2083ztL459eoSot645UPqWTVldymPv5oike8KIYWgUboeakPcZfenmg2nYuzBQ2uy_b0_uDEtOkF55dpuGPmqYKoX7cDOqoUkhWqe1jfy9uY4cSBnW21/s1600/savannah-mylyn-install2.jpeg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 305px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiieYrfUbbqOjEa0v3G2083ztL459eoSot645UPqWTVldymPv5oike8KIYWgUboeakPcZfenmg2nYuzBQ2uy_b0_uDEtOkF55dpuGPmqYKoX7cDOqoUkhWqe1jfy9uY4cSBnW21/s400/savannah-mylyn-install2.jpeg" alt="" id="BLOGGER_PHOTO_ID_5609521698421018738" border="0" /></a><br />For this tutorial I will use my GNU project Source-Highlight as an example:<br /><ul><li>Server: <span style="font-family:courier new;">https://savannah.gnu.org/bugs/?group=src-highlite</span><br /></li><li>Label: choose a label to represent your task repository</li><li>put your savannah username and password</li><li>Additional Settings</li><ul><li>Add two parameters:<br /></li><ul><li><span style="font-weight: bold;">group</span> with value the name of the project on savannah (in my case it's src-highlite)</li><li><span style="font-weight: bold;">tracker</span> with the specific kind of tasks you want to follow on savannah (e.g., bugs, or patches, etc.)</li></ul></ul><li>Advanced Configuration</li><ul><li>Task URL: <span style="font-family:courier new;">https://savannah.gnu.org/${tracker}/?</span></li><li>New Task URL: <span style="font-family:courier new;">${serverUrl}&func=additem</span></li><li>Query Request Pattern: <span style="font-family:courier new;">${serverUrl}&chunksz=150&report_id=100</span></li><li>Query Pattern:<br /><span style="font-family: courier new;"><td.*?#({Id}[0-9]+).*?/td>\n<td ><a.*?>({Description}.*?)</a></td></span></li></ul></ul><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxvMmmRxq5xqgGzlI5_rmHQEEdD3BZB5yAgYtuOoJmdfZuVee7JOO40bPzkUCCedc1UIoqU95gvW-BkuV3iTDK8MdUmtMpSpE6wVQEJJgoWlNTfIh-TFHgce9HOJjR-ZhLYS1F/s1600/savannah-mylyn-install4.jpeg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 385px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxvMmmRxq5xqgGzlI5_rmHQEEdD3BZB5yAgYtuOoJmdfZuVee7JOO40bPzkUCCedc1UIoqU95gvW-BkuV3iTDK8MdUmtMpSpE6wVQEJJgoWlNTfIh-TFHgce9HOJjR-ZhLYS1F/s400/savannah-mylyn-install4.jpeg" alt="" id="BLOGGER_PHOTO_ID_5609527470529423362" border="0" /></a><br />When you click Finish, also accepts to add a query for the repository.<br /><br />In the query properties dialog you can check whether all the inserted parameters for the task repository are correct, by clicking on the preview button (you should see a list of bugs, otherwise the dialog should tell you that query is not correct and cannot produce results)<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijB4sbEjlZSwgETxB6KYRt0tZKELGPjnE_6Uptix2c2CnCRTyqXJ_4G3L9QIEYddqT3-fcC3Lk4RWkL5Ln40fMmuN04O_-hQ5c6t5cRQ1CSjshHwzNUpOxRySD-xwCof0QKWmR/s1600/savannah-mylyn-install5.jpeg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 337px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijB4sbEjlZSwgETxB6KYRt0tZKELGPjnE_6Uptix2c2CnCRTyqXJ_4G3L9QIEYddqT3-fcC3Lk4RWkL5Ln40fMmuN04O_-hQ5c6t5cRQ1CSjshHwzNUpOxRySD-xwCof0QKWmR/s400/savannah-mylyn-install5.jpeg" alt="" id="BLOGGER_PHOTO_ID_5609528777156535778" border="0" /></a><br />Now, if you open the view Task List, you should see the bugs related to your query.<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg64NpHsu27NKzbgEV0dyfg6Ws0U4cQavZlBCX4kL6dpDJ7vGEJLCngQHFRyhkXrZkV-gUDqJ1B-Uh8c4Wo6XheryUhKDuwGttrruxFj-kwJjkt_HVdJ-dtQ4m8U0siQJsObhW1/s1600/savannah-mylyn-install6.jpeg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 358px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg64NpHsu27NKzbgEV0dyfg6Ws0U4cQavZlBCX4kL6dpDJ7vGEJLCngQHFRyhkXrZkV-gUDqJ1B-Uh8c4Wo6XheryUhKDuwGttrruxFj-kwJjkt_HVdJ-dtQ4m8U0siQJsObhW1/s400/savannah-mylyn-install6.jpeg" alt="" id="BLOGGER_PHOTO_ID_5609530430986790722" border="0" /></a><br />Now clicking on a bug will open a browser editor window in eclipse and you access that bug page. Remember that, since you access the savannah repository through a generic web connector you won't be able to enjoy the typical Mylyn rich editor for bugs, like the ones for bugzilla and trac). However, you'll still have the context tab and the private tab.<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQy9Nr9DN57fRftyKB8dWOQ7L0521vs6NE875DXj7ChR2LDrGL15yykiBwOmxMU4sSUO2Gw22fn-A2xsCkR5bdgEMDKs7p2MSFJhqAqGHmtCN5p671Q1jWBrCxEPuagD_K9rIw/s1600/savannah-mylyn-install7.jpeg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 234px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQy9Nr9DN57fRftyKB8dWOQ7L0521vs6NE875DXj7ChR2LDrGL15yykiBwOmxMU4sSUO2Gw22fn-A2xsCkR5bdgEMDKs7p2MSFJhqAqGHmtCN5p671Q1jWBrCxEPuagD_K9rIw/s400/savannah-mylyn-install7.jpeg" alt="" id="BLOGGER_PHOTO_ID_5609530856339689842" border="0" /></a><br />Hope this helps :)bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com6tag:blogger.com,1999:blog-35239346.post-30509477111078630712011-03-22T16:45:00.002+01:002011-03-22T16:54:33.818+01:00Problems with microphone in LinuxI was experiencing problems with the microphone (in Skype) in Kubuntu Maverick 10.10: no input was received by the microphone, either in Skype or using the arecord. The soundcard is an<br /><blockquote>Intel [HDA Intel], device 0: AD198x Analog [AD198x Analog]</blockquote>and kmix was showing the capture device's volume at the maximum.<br /><br />I don't know whether KDE configuration was spoiled by something, e.g., an update. However, I solved the problem by setting the capture source to the front mic, using <span style="font-weight: bold;">alsamixer</span> command line command (kmix does not seem to show any option about this).<br /><br />So, if you have similar problem, run alsamixer from the command line, press F4 so that it shows only the Capture devices, set the volume of the capture devices (in my case Front mic) as high, and, most importantly, set the Input sources of capture (in my case Front mic).<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSqKbJQlWKS_seQta1faD-mxt16hFtA1wEoUvjOkvWdJZG9KM7H7OBwfOMJVd1F-Ujob7eXhBGwiuXkx97SfLT-m_ZndQuQa6c2SKL7Sw3uHQBEW0arBPgrRvGP68Ytpq_OLVo/s1600/alsamixer.jpeg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 353px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSqKbJQlWKS_seQta1faD-mxt16hFtA1wEoUvjOkvWdJZG9KM7H7OBwfOMJVd1F-Ujob7eXhBGwiuXkx97SfLT-m_ZndQuQa6c2SKL7Sw3uHQBEW0arBPgrRvGP68Ytpq_OLVo/s400/alsamixer.jpeg" alt="" id="BLOGGER_PHOTO_ID_5586933139419267986" border="0" /></a><br />Now your mic should work!bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com0tag:blogger.com,1999:blog-35239346.post-78109747873932997552011-02-08T10:38:00.002+01:002011-02-08T10:42:16.816+01:00Find and Rename files in LinuxI had to rename many files (in particular their extensions) which were spread throughout many folders.<br /><br />I already knew <span style="font-weight: bold;">find</span> and <span style="font-weight: bold;">rename</span> utilities but I had never used them together...<br /><br />here's the command line to rename all files in all the folders of the current directory with extension <span style="font-weight: bold;">.first</span> to <span style="font-weight: bold;">.second</span><br /><br /><span style="font-weight: bold;">find . -name "*.first" -exec rename -v 's/\.first$/\.second/' {} + </span><br /><br />hope this helps :)bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com2tag:blogger.com,1999:blog-35239346.post-53593711752635186772011-01-13T12:50:00.014+01:002011-01-13T13:15:55.866+01:00Compile Linux Kernel in Ubuntu with KernelCheck (and Nvidia drivers)<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj17VSDo0HTJLRXoxrgKJ43QDSnuRllW7D8HkWNb6Z_AtDddmRVbdWsdOHIXerGLvQ6U6Asbp1yP7GNm2rre4EcDOKaws4LUYIciuw6Q_SXZ6B3OCWiTwZh7aWvIEc-l-M2PSIH/s1600/kernelcheck-icon.png"><img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 80px; height: 80px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj17VSDo0HTJLRXoxrgKJ43QDSnuRllW7D8HkWNb6Z_AtDddmRVbdWsdOHIXerGLvQ6U6Asbp1yP7GNm2rre4EcDOKaws4LUYIciuw6Q_SXZ6B3OCWiTwZh7aWvIEc-l-M2PSIH/s200/kernelcheck-icon.png" alt="" id="BLOGGER_PHOTO_ID_5561642988384929010" border="0" /></a>I've always recompiled Linux kernel on all my Linux installations, starting from the kernel sources of the Ubuntu repositories. Then I've heard about the famous <a href="http://www.phoronix.com/scan.php?page=article&item=linux_2637_video&num=1">200 lines kernel patch</a>, that I wanted to try, but it doesn't seem to apply to ubuntu linux sources (or at least I had this impression), and I didn't want to try the <a href="http://www.webupd8.org/2010/11/alternative-to-200-lines-kernel-patch.html">alternatives</a>.<br /><br />Then I stumbled upon this nice <a href="http://www.webupd8.org/2010/12/how-to-compile-kernel-in-ubuntu-easy.html">article</a> about using <a href="http://kcheck.sourceforge.net/">KernelCheck</a> (which I didn't know) to compile the linux kernel (not from the ubuntu repositories):<br /><blockquote>a graphical user interface program designed to make the kernel-compiling process as easy as the click of a button. KernelCheck will fetch the latest information from http://www.kernel.org, which hosts the source packages for the Linux kernel, and ask the user which one they would like to compile into a .deb package (with the option of installing the kernel after the compilation).</blockquote>The article also applies the 200 lines patch, so I decided to give it a try! The articles shows a video, but I'd like to blog about my experience with some screenshots.<br /><br />Most important, I decided to blog about my experience because of the <span style="font-weight: bold;">Nvidia drivers</span> I have on some of my Linux computers, since the <span style="font-weight: bold;">first experience with KernelCheck and nvidia drivers was really bad</span>. I think I found a solution to deal with these drivers, so that I can compile the kernel, the patch, and have nvidia drivers work without a problem :)<br /><br />After you installed kernelcheck, and run it you'll have some screens, and first of all you must retrieve available kernel information:<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9dWRxwfAUpaNTKNg70R_qVqQom4IN-hCoXS9U8My9kiHW04OGwmdtCM3jKWy-QpeYOH-AUl56sHJX6taYbCOh0Z3CidgPSIW0dRAKnH3dOOi1_jPPG5dwYQ_QXticdRDH0D88/s1600/kernelcheck+1.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 317px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9dWRxwfAUpaNTKNg70R_qVqQom4IN-hCoXS9U8My9kiHW04OGwmdtCM3jKWy-QpeYOH-AUl56sHJX6taYbCOh0Z3CidgPSIW0dRAKnH3dOOi1_jPPG5dwYQ_QXticdRDH0D88/s400/kernelcheck+1.png" alt="" id="BLOGGER_PHOTO_ID_5561638932363513346" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigMsRhbux8bcjuomlXvVDBfNZKXejj_wIRCiYIhBbBlKj2UEO5lmMWiXBQTtKNXmdWKt8oBHoiF2LN14apPaIhaxOGw8rha79OwmjSGhC8kwFQelxBhLyW219qPS3AeRg8W9p4/s1600/kernelcheck+2.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 317px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigMsRhbux8bcjuomlXvVDBfNZKXejj_wIRCiYIhBbBlKj2UEO5lmMWiXBQTtKNXmdWKt8oBHoiF2LN14apPaIhaxOGw8rha79OwmjSGhC8kwFQelxBhLyW219qPS3AeRg8W9p4/s400/kernelcheck+2.png" alt="" id="BLOGGER_PHOTO_ID_5561639062753250162" border="0" /></a><br />Then I select the custom compilation<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIrWbrYxIiOaTJ_6R4RMKRJbdrnhaEOmfXHZoNqYoDLP_IwsimvTDfaJd04Kn3YsuU_FpTA_sSKANYjf1uxHVok_9AvEtmDwlk4pYySWoQVJk_rhIYB_JxuDz0V6XP_lUx5PmD/s1600/kernelcheck+3.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 317px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIrWbrYxIiOaTJ_6R4RMKRJbdrnhaEOmfXHZoNqYoDLP_IwsimvTDfaJd04Kn3YsuU_FpTA_sSKANYjf1uxHVok_9AvEtmDwlk4pYySWoQVJk_rhIYB_JxuDz0V6XP_lUx5PmD/s400/kernelcheck+3.png" alt="" id="BLOGGER_PHOTO_ID_5561639222011685266" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX2Z934WQ1lmmTUEZo9xhIVjz0ejWK2NCifoV-aL3kZAx5UBfxHsPZeBh6V4ADLHH-RWY60c0RE5e4HzY38PNi1kw21J3WKwvMxfCoS9RT3mErWV3fX7cX4i9UurEih1TMcVLK/s1600/kernelcheck+4.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 317px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX2Z934WQ1lmmTUEZo9xhIVjz0ejWK2NCifoV-aL3kZAx5UBfxHsPZeBh6V4ADLHH-RWY60c0RE5e4HzY38PNi1kw21J3WKwvMxfCoS9RT3mErWV3fX7cX4i9UurEih1TMcVLK/s400/kernelcheck+4.png" alt="" id="BLOGGER_PHOTO_ID_5561639312148366530" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgborEqpIr6vSyfe1_VFCbsbKlckjyIxbvdh6gNdwzhBkeOxDNrKCCFrCINa9MYvbxNMrdht7LE0rd9Dp_b5ggeag2cuuFVg34Onqz41FKVGxfDoNMoRHweLBKOj6UCNUVguiEZ/s1600/kernelcheck+5.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 317px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgborEqpIr6vSyfe1_VFCbsbKlckjyIxbvdh6gNdwzhBkeOxDNrKCCFrCINa9MYvbxNMrdht7LE0rd9Dp_b5ggeag2cuuFVg34Onqz41FKVGxfDoNMoRHweLBKOj6UCNUVguiEZ/s400/kernelcheck+5.png" alt="" id="BLOGGER_PHOTO_ID_5561639388430920738" border="0" /></a><br />Now, you can select some options.<br /><br />At this point, it is crucial<br /><ul><li><span style="font-weight: bold;">NOT</span> to select the reconfiguration of X server</li><li><span style="font-weight: bold;">NOT</span> to install the nvidia driver</li><li>to select "apply custom patch to the kernel" (if you want to try the 200 lines patch)</li><li>I prefer not to install the kernel package after compilation: I'll do that myself<br /></li></ul><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh52xnbypRre1vg3Q4kyt2QUPjDW_ykgUn_buzP68Z-P7aIu_SNJDiiGOQlOWaLSdW1dyLeIiWgPo17BhKR6oyClRQ5I5kjBgMYPAiTvBFZPFS4-ZlY9IrFaT4Tus7tVoQTOLrv/s1600/kernelcheck+6.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 317px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh52xnbypRre1vg3Q4kyt2QUPjDW_ykgUn_buzP68Z-P7aIu_SNJDiiGOQlOWaLSdW1dyLeIiWgPo17BhKR6oyClRQ5I5kjBgMYPAiTvBFZPFS4-ZlY9IrFaT4Tus7tVoQTOLrv/s400/kernelcheck+6.png" alt="" id="BLOGGER_PHOTO_ID_5561639521690120178" border="0" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7UfgVOh7TKt9h11WyjbsAlS2ytBLwRdCKeqa7qiVKliAyfl_jQwWx1FF9lfday9aKEmLLOFbHkkDCnh2IYpu0VWkSr3SibelBpMfhAKRa28pFO7v40eXiP8vbHUi0wkPoMzwZ/s1600/kernelcheck+7.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 317px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7UfgVOh7TKt9h11WyjbsAlS2ytBLwRdCKeqa7qiVKliAyfl_jQwWx1FF9lfday9aKEmLLOFbHkkDCnh2IYpu0VWkSr3SibelBpMfhAKRa28pFO7v40eXiP8vbHUi0wkPoMzwZ/s400/kernelcheck+7.png" alt="" id="BLOGGER_PHOTO_ID_5561640129987627186" border="0" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvpDSjJeO91KTwZLzcvLxdcAjTxArrM9w9MABU6evbsyROLhVmKBg1ONlH_krVzSreH-IWn7ZkTGEjL5anXqP8dBRmsFEz9d5D5zRZPeQGIBIaIOOw2fzjVGdbZyTR_WKR-RQ2/s1600/kernelcheck+8.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 375px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvpDSjJeO91KTwZLzcvLxdcAjTxArrM9w9MABU6evbsyROLhVmKBg1ONlH_krVzSreH-IWn7ZkTGEjL5anXqP8dBRmsFEz9d5D5zRZPeQGIBIaIOOw2fzjVGdbZyTR_WKR-RQ2/s400/kernelcheck+8.png" alt="" id="BLOGGER_PHOTO_ID_5561640228405613554" border="0" /></a><br />After the download of the needed packages is finished, you'll get a terminal window where you can apply manually the patch (that you can <a href="https://patchwork.kernel.org/patch/337311/raw">download it from here</a>), and apply it, as it is shown in the screenshot (then you need to close the terminal window)<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAIYKnkOt6u2HRNH5FLDJUN8dCtsdczIrLMuaAhV4pk5DjHKQyrlWHDpOBUFkt4kpfEn2E8luKgEVuZEFFJ6Mi8_RaWjI3R8cDc18Xye5WFLlApTEWm1UFY5B7v_KCaggFzqME/s1600/kernelcheck+9.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 258px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAIYKnkOt6u2HRNH5FLDJUN8dCtsdczIrLMuaAhV4pk5DjHKQyrlWHDpOBUFkt4kpfEn2E8luKgEVuZEFFJ6Mi8_RaWjI3R8cDc18Xye5WFLlApTEWm1UFY5B7v_KCaggFzqME/s400/kernelcheck+9.png" alt="" id="BLOGGER_PHOTO_ID_5561640328064113714" border="0" /></a><br />Then, you'll get the chance to configure the kernel before compilation. Make sure you have all the options you need set (it looks like kernelcheck starts from the current configuration, so, for instance, the processor family is already set as your current configuration).<br /><br />To enjoy the 200 lines kernel patch, you must enable <span style="font-weight: bold;">"Automatic process group scheduling"</span> under "General setup", as shown in the following screenshot:<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9RjQnxbi3NTSeurQ8VQfzsn90GSJVj_W77YJU1RX8srpU1yN123cjY9gmj_qf2cTvwMjtJvMS8NmIgc9I36_DtrqXGTqmLFD_xy49gkDPehwMVoVcAL3A_s2Hp933V-JsZg3S/s1600/kernelcheck+10.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 252px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9RjQnxbi3NTSeurQ8VQfzsn90GSJVj_W77YJU1RX8srpU1yN123cjY9gmj_qf2cTvwMjtJvMS8NmIgc9I36_DtrqXGTqmLFD_xy49gkDPehwMVoVcAL3A_s2Hp933V-JsZg3S/s400/kernelcheck+10.png" alt="" id="BLOGGER_PHOTO_ID_5561640742134024498" border="0" /></a><br />Then, the compilation starts, and, you know, it might take some time (though for my computer, and configuration it takes less than 1 hour)<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv-UN2780a8wzPSIJc-RDkheXL9B7wa8-bv8Y-xc9OrEBIOk1R6Yj7nfFNnJy_p8-m-YadnUGXtpp8SqNBpK28ajHRNwTheJ7CpOp1vKVwPNKMPmXSa-_kCaGAL7R9iI0weqYB/s1600/kernelcheck+11.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 375px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv-UN2780a8wzPSIJc-RDkheXL9B7wa8-bv8Y-xc9OrEBIOk1R6Yj7nfFNnJy_p8-m-YadnUGXtpp8SqNBpK28ajHRNwTheJ7CpOp1vKVwPNKMPmXSa-_kCaGAL7R9iI0weqYB/s400/kernelcheck+11.png" alt="" id="BLOGGER_PHOTO_ID_5561641481873191362" border="0" /></a><br />Then, you'll be suggested to reconfigure the X server... <span style="font-weight: bold;">DON'T DO THIS</span>, and answer no<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpodH00asGgpIe8XMLy2sZmIt6noxB97Jubmw8OuA4pVSTLxlN1BfjoAq0ThXmK-QCyHbX-fkrY8TX9uVCPmOSJZq_DIKdIUEORMKnOzi2pISkoVUA1dmhmIZNUsZoYFVwcmWQ/s1600/kernelcheck+12.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 375px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpodH00asGgpIe8XMLy2sZmIt6noxB97Jubmw8OuA4pVSTLxlN1BfjoAq0ThXmK-QCyHbX-fkrY8TX9uVCPmOSJZq_DIKdIUEORMKnOzi2pISkoVUA1dmhmIZNUsZoYFVwcmWQ/s400/kernelcheck+12.png" alt="" id="BLOGGER_PHOTO_ID_5561641722951210626" border="0" /></a><br />Then, the kernel deb packages (-image and -headers) will be ready in /usr/src, and you can manually install them.<br /><br />Note that, during the installation, the Ubuntu kernel utilities will smartly <span style="font-weight: bold;">compile and configure the current nvidia modules for you</span>!<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2ZqHuUHNbaYmSYzQZ3Y85jcX_Y4jn_UQBybG4qS4zN9LaM-K1eGxIzQSl4KC2uDHHCc9fawlQ0y4ahaSltXXvCOKgmL_Vlknm4vv0RE4v_lQpYxVDP5JOhrQFN8_0IXVZ1POV/s1600/kernelcheck+13.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 358px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2ZqHuUHNbaYmSYzQZ3Y85jcX_Y4jn_UQBybG4qS4zN9LaM-K1eGxIzQSl4KC2uDHHCc9fawlQ0y4ahaSltXXvCOKgmL_Vlknm4vv0RE4v_lQpYxVDP5JOhrQFN8_0IXVZ1POV/s400/kernelcheck+13.png" alt="" id="BLOGGER_PHOTO_ID_5561641925167045346" border="0" /></a>Now, reboot and enjoy :)<br /><br />P.S. I cannot swear my computer is faster now with the 200 lines kernel patch... but I have the impression it is :)bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com3tag:blogger.com,1999:blog-35239346.post-85919158656210834712010-11-22T15:22:00.004+01:002010-11-22T15:34:32.282+01:00Eclipse icons in menus are not showing in Ubuntu Maverick LinuxI don't like Gnome and I usually use KDE, but on a specific computer I have to use Gnome, and I noted that after switching to Ubuntu Maverick, icons on eclipse menus were not showing anymore.<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcvWtaTs3ouIeC-e9HganDPKVTyZW63pbXS3KRbiIlmzNevX-KLj-SgJTzpatoLrbZEiMHrBazxxBvPGa2iqBjLvz_wKQmAd4Xsgf9-2rSzOKrQqOurT1GxP5OvH8W9QLo3t-b/s1600/Screenshot-Java+-+Eclipse+SDK+.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 246px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcvWtaTs3ouIeC-e9HganDPKVTyZW63pbXS3KRbiIlmzNevX-KLj-SgJTzpatoLrbZEiMHrBazxxBvPGa2iqBjLvz_wKQmAd4Xsgf9-2rSzOKrQqOurT1GxP5OvH8W9QLo3t-b/s400/Screenshot-Java+-+Eclipse+SDK+.png" alt="" id="BLOGGER_PHOTO_ID_5542380947613692562" border="0" /></a><br />I asked on some newsgroups with no luck, then on IRC I was pointed to <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=293720">this bug</a>, which solved my issue :)<br /><br />You need to enable icons in menus with gnome configuration. You find some ways to do that on that bug report, but I simply ran <span style="font-weight: bold;">gconf-editor</span> on the command line, and enabled that checkbox:<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtO_whTQU-8-qDOMVmwtWeRivPyRqC34vdGhtrKj41pRMFHrenhjyQ-SrLTosXJmhkgcJXV4iS-UpWmmsI9-MlCvK25YYWRvtnlEi3Voats5LKBg6Ay_vxkSRRR4ZG6hKxdoXv/s1600/Screenshot-Configuration+Editor+-+interface.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 286px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtO_whTQU-8-qDOMVmwtWeRivPyRqC34vdGhtrKj41pRMFHrenhjyQ-SrLTosXJmhkgcJXV4iS-UpWmmsI9-MlCvK25YYWRvtnlEi3Voats5LKBg6Ay_vxkSRRR4ZG6hKxdoXv/s400/Screenshot-Configuration+Editor+-+interface.png" alt="" id="BLOGGER_PHOTO_ID_5542381515465620706" border="0" /></a><br />Now my icons in menus are back :)<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRGsjGTd5e3PrUKbTboGIgixd-xwTQs0OwL5SaZsqVvACY1M3XOmraW_Yk3p5GSalZ_tVISreIWsxBCh8YR0gMCiscsMeDO8l65vK5zBco0dWsZnc-dOw8XpKeZPts73JWbEFy/s1600/Eclipse+Menu+Icons+Screenshot.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 238px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRGsjGTd5e3PrUKbTboGIgixd-xwTQs0OwL5SaZsqVvACY1M3XOmraW_Yk3p5GSalZ_tVISreIWsxBCh8YR0gMCiscsMeDO8l65vK5zBco0dWsZnc-dOw8XpKeZPts73JWbEFy/s400/Eclipse+Menu+Icons+Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5542382333929066754" border="0" /></a>bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com1tag:blogger.com,1999:blog-35239346.post-80260952045773711722010-10-13T12:08:00.009+02:002010-10-13T12:39:48.304+02:00Using Compiz in KDE 4<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcuQ7M0l71UciVyoQv0mSXcDgA9og5FP7sUrZY2ThQX1uygC3FCiYi2k4MrhXkp3GAkKvZIofTQ5lDuEvOYR6R9uXrpJkQEjNz7ng6JE257XMBZBu0yR_q-ynNu8Tm_bsQGlrN/s1600/compiz_fusion_logo.png"><img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 194px; height: 200px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcuQ7M0l71UciVyoQv0mSXcDgA9og5FP7sUrZY2ThQX1uygC3FCiYi2k4MrhXkp3GAkKvZIofTQ5lDuEvOYR6R9uXrpJkQEjNz7ng6JE257XMBZBu0yR_q-ynNu8Tm_bsQGlrN/s200/compiz_fusion_logo.png" alt="" id="BLOGGER_PHOTO_ID_5527472249279502066" border="0" /></a>I've been using KDE 4 for some time now, and I was pretty happy with its own desktop effects. However, lately, I started to notice that kwin and xorg process were taking some CPU usage, and with graphic cards such as Intel GMA and ATI, the effects were not so smooth (while in Gnome with compiz they were much better). So I decided to try and use compiz with KDE as well; here's my (positive) installation and configuration experience.<br /><br />First of all I installed all these packages<br /><blockquote></blockquote><blockquote>emerald libemeraldengine0 compiz compizconfig-settings-manager compiz-kde compiz-fusion-plugins-main compiz-fusion-plugins-extra fusion-icon</blockquote>Then you found the <span style="font-weight: bold;">compiz-fusion</span> application in my KDE menu, in System. Run it, and you can set some configuration options with that icon, in particular, you need to change the <span style="font-style: italic;">window decoration</span> to <span style="font-weight: bold;">emerald</span>, and the window manager (to compiz). Then you must select <span style="font-style: italic;">reload window manager</span>.<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibZK4pPXlN6Ix3avNT7O6zmQSzDgghRnuS8VE5GVQorKQQu-yL0EF5yWf3CMLStwF9FymMtYJfetY1RPpp_cl9IMIYkj56hkwcyIGLp_x-iBJsLMHpldKClDNSLLoyH1UuRa9G/s1600/compiz+KDE+1.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 177px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibZK4pPXlN6Ix3avNT7O6zmQSzDgghRnuS8VE5GVQorKQQu-yL0EF5yWf3CMLStwF9FymMtYJfetY1RPpp_cl9IMIYkj56hkwcyIGLp_x-iBJsLMHpldKClDNSLLoyH1UuRa9G/s400/compiz+KDE+1.png" alt="" id="BLOGGER_PHOTO_ID_5527477094102742578" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp3cl-RgsNwu05A5mRzW6qZ-u7IgVEdpdPIzskkt_ShKDVFyhNrT8htI5-r63B0H82NJ07VYHR5zKxmKBW1FjIQW4nBe50KkzhzIDDtw9XZt-O4kcG5BiUFVXbHtnFQdaDMyte/s1600/compiz+KDE+2.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 379px; height: 197px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp3cl-RgsNwu05A5mRzW6qZ-u7IgVEdpdPIzskkt_ShKDVFyhNrT8htI5-r63B0H82NJ07VYHR5zKxmKBW1FjIQW4nBe50KkzhzIDDtw9XZt-O4kcG5BiUFVXbHtnFQdaDMyte/s400/compiz+KDE+2.png" alt="" id="BLOGGER_PHOTO_ID_5527477208294504290" border="0" /></a><br />To keep compiz as the default window manager when KDE starts, you need to change System Settings -> Default Applications -> Window Manager (by selecting Compiz).<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPvGrpzt3DpA56Ubb6raKJ3Jf6HUUoPsorjgEEs_9pSlxnVlLfX6s9A7SfhoQBYZiYuuKjLLJR4o3iGTbAwD1NFCktvOnBV0rKP2DHQ2mlXuzDTeR1Wsg6EvB3kmfJ4j7NdHV3/s1600/compiz+KDE+3.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 288px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPvGrpzt3DpA56Ubb6raKJ3Jf6HUUoPsorjgEEs_9pSlxnVlLfX6s9A7SfhoQBYZiYuuKjLLJR4o3iGTbAwD1NFCktvOnBV0rKP2DHQ2mlXuzDTeR1Wsg6EvB3kmfJ4j7NdHV3/s400/compiz+KDE+3.png" alt="" id="BLOGGER_PHOTO_ID_5527477655691606370" border="0" /></a><br />Of course, now you can configure compiz settings with its setting manager, but I suggest you to use the simpler configuration manager, <span style="font-weight: bold;">simple-ccsm</span>, as illustrated <a href="http://www.unixmen.com/linux-distributions/4-ubuntu/1223--custom-compiz-effects-configuration-in-ubuntu">here</a>.<br /><br />Now enjoy compiz! :)bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com2tag:blogger.com,1999:blog-35239346.post-48769351985566822362010-08-03T16:32:00.003+02:002010-08-03T16:39:03.364+02:00PhpBibliography 1.1.0This new release of <a href="http://phpbibliography.sourceforge.net/">PhpBibliography</a> features some nice features:<br /><ol><li>First of all, themes are now supported so that the user can create his own theme (which will not be overwritten during phpbibliography updates), see this <a href="http://sourceforge.net/apps/mediawiki/phpbibliography/index.php?title=Customization:Themes_in_PhpBibliography">wiki page</a></li><li>icons for known file extensions are shown for uploaded papers (see the screenshot)</li><li>uploaded papers can be removed during editing</li><li>the action menu was improved with tooltips</li><li>search results can be shown also as bibtex</li></ol><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijPyuzdUTsKkpmyWE5AifYeMxGe12BZwltqCva3Duvy8Idj8eCaua72lo8HMNZWjwbmNdZS-PGc9qt8hR0bSDrHsop0gGmN6QIuA5ZhgrCnxYPBRmYUjsfJ4PLrJJYrBo_38ND/s1600/phpbibliography_icons.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 218px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijPyuzdUTsKkpmyWE5AifYeMxGe12BZwltqCva3Duvy8Idj8eCaua72lo8HMNZWjwbmNdZS-PGc9qt8hR0bSDrHsop0gGmN6QIuA5ZhgrCnxYPBRmYUjsfJ4PLrJJYrBo_38ND/s400/phpbibliography_icons.png" alt="" id="BLOGGER_PHOTO_ID_5501193027636779874" border="0" /></a>bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com20tag:blogger.com,1999:blog-35239346.post-63417588322166005592010-07-28T17:19:00.004+02:002010-07-28T17:29:15.177+02:00Merging Subtitles in Video Files with DivXConverterI recently discovered this cool program, <a href="http://code.google.com/p/foxoman/wiki/DivXConverter">DivXConverter</a>, which I didn't find in my Ubuntu distribution (you can download the .deb file, though, and install the required dependencies), but that's really useful and easy to use.<br /><blockquote>"DivX converter is a simple Mencoder frontend to Produce DivX Player Compatible AVI video format with the ability to merge subtitles . It support many video and audio filters and many presets."</blockquote>Now, the interesting features I've just used is the ability of merging a subtitle file (typically .srt) into a corresponding AVI file.<br /><br />Here's what to do (see also the following screenshot):<br /><ol><li>Add the avi file (and select the output folder and the compression, I left the default Normal compression)<br /></li><li>Make sure to select Xvid in the "Video Filters" tab to make sure the resulting avi is compatible with dvd/divx readers (at least the with ones I own)</li><li>You can leave the default settings for Audio</li><li>Select the subtitle file (I set ASCII as the encoding)</li><li>Go back to the main window</li><li>Press "Convert" and enjoy the resulting AVI file</li></ol><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKFa-IKX78LMgKwOs6q2uW_uf84UQrNMsXBAplG3_8oVkp9jisIsP7bRx9PgNaeW0TvqdpXtv2D4FNehJrV_DBpRgFesG9ONoluBdXqfc_Dt3LN4N_sB8z4EsIhJAWWy8PxHMR/s1600/divxconverter1.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 290px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKFa-IKX78LMgKwOs6q2uW_uf84UQrNMsXBAplG3_8oVkp9jisIsP7bRx9PgNaeW0TvqdpXtv2D4FNehJrV_DBpRgFesG9ONoluBdXqfc_Dt3LN4N_sB8z4EsIhJAWWy8PxHMR/s400/divxconverter1.png" alt="" id="BLOGGER_PHOTO_ID_5498978993938341266" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB-jnSbgC77oZ0TmhPb4XEE1jp5jVxaS-2MsV-_V9wGSQcbO9pXXT0AY3hw-YoP8rh00Dx_oQUA1n6Y1Aw0xqoGm7xZS8hoP4TSoTE6ulKE9kaQmUs_zkG9htf78Q4BSC5tmU2/s1600/divxconverter2.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 290px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB-jnSbgC77oZ0TmhPb4XEE1jp5jVxaS-2MsV-_V9wGSQcbO9pXXT0AY3hw-YoP8rh00Dx_oQUA1n6Y1Aw0xqoGm7xZS8hoP4TSoTE6ulKE9kaQmUs_zkG9htf78Q4BSC5tmU2/s400/divxconverter2.png" alt="" id="BLOGGER_PHOTO_ID_5498979125562462770" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTOoWEBZOo30m_nnVD4XmkqmyB1XIr_N2HbWblV7Y-ZhMlkCUMPXUmO62wHocv2FtaNW2swOSl-sPsTI6FnJnS_ijgFZMhR3d_BI1NP8A-oUIzzqPKaElw5XDq-85zieGZI5HW/s1600/divxconverter3.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 290px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTOoWEBZOo30m_nnVD4XmkqmyB1XIr_N2HbWblV7Y-ZhMlkCUMPXUmO62wHocv2FtaNW2swOSl-sPsTI6FnJnS_ijgFZMhR3d_BI1NP8A-oUIzzqPKaElw5XDq-85zieGZI5HW/s400/divxconverter3.png" alt="" id="BLOGGER_PHOTO_ID_5498979225395835826" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPnL999cFDwzQrd92HYHgH0boN4OEFrlztd5DeiFP6H3JhTU7tenTRp0sd4wlez_9ms3CXcoxn6QhI_aFC45cZsBskMI0E1oouXtFwHpwppwfRLL7MXKKTJZDmHwG5DjRBYR7W/s1600/divxconverter4.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 290px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPnL999cFDwzQrd92HYHgH0boN4OEFrlztd5DeiFP6H3JhTU7tenTRp0sd4wlez_9ms3CXcoxn6QhI_aFC45cZsBskMI0E1oouXtFwHpwppwfRLL7MXKKTJZDmHwG5DjRBYR7W/s400/divxconverter4.png" alt="" id="BLOGGER_PHOTO_ID_5498979307777924322" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvOUkx8bzr9LmfmU91foIr3pjXx1SjKs7ilZd98CFBNVwUyH_Sw9aFGWciQ4oHwiUfhQm1XweWzuA8A7FzeapTl1BSsgW7FoQTeCAFEjCho9BM3j3n8Xwfpqw8HnTw2Aw-Z6Q6/s1600/divxconverter5.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 281px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvOUkx8bzr9LmfmU91foIr3pjXx1SjKs7ilZd98CFBNVwUyH_Sw9aFGWciQ4oHwiUfhQm1XweWzuA8A7FzeapTl1BSsgW7FoQTeCAFEjCho9BM3j3n8Xwfpqw8HnTw2Aw-Z6Q6/s400/divxconverter5.png" alt="" id="BLOGGER_PHOTO_ID_5498979396673715650" border="0" /></a>bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com0tag:blogger.com,1999:blog-35239346.post-32391001113717594502010-07-09T15:00:00.002+02:002010-07-09T15:03:02.751+02:00mounting none on /dev failed: No such deviceIf you're experiencing this error message at boot in Linux (e.g., after you recompiled the kernel in Ubuntu Lucid)<br /><br /><span style="font-weight: bold;">mounting none on /dev failed: No such device</span><br /><br />don't be scared, the boot will continue and there'll be no problem (at least, I read in some posts); I never experienced problems even with this error at boot.<br />But if you want to get rid of it, just make sure that you have<br /><br /><span style="font-weight: bold;">CONFIG_DEVTMPFS=y</span><br /><br />in your .config file of your kernel source directory.bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com3tag:blogger.com,1999:blog-35239346.post-25340001645319940192010-07-07T10:12:00.007+02:002010-07-07T10:33:50.495+02:00mSoma a Qt client for SomaFM<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCJ4E5Ux2LoMLkzM1uqvCtoP1lEd-JbJRVGnARdPUeSc5t572P-Hg0rhKIJg3MAb4SGlYaaiLS3oX_R2hql44yh_9lr1F_06zVp1BywZ-klaYnXwDOfU7qbxwpZ4SWlDhFtBrN/s1600/msoma_64x64.png"><img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 64px; height: 64px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCJ4E5Ux2LoMLkzM1uqvCtoP1lEd-JbJRVGnARdPUeSc5t572P-Hg0rhKIJg3MAb4SGlYaaiLS3oX_R2hql44yh_9lr1F_06zVp1BywZ-klaYnXwDOfU7qbxwpZ4SWlDhFtBrN/s200/msoma_64x64.png" alt="" id="BLOGGER_PHOTO_ID_5491075199245823698" border="0" /></a><a href="http://www.andreagrandi.it/">Andrea Grandi</a> proposed me a few weeks ago to try and develop a client for <a href="http://somafm.com/">SomaFM</a>, a streaming radio with near 16 different channels, available for free. Indeed we wanted to try to develop an application for our cool Nokia N900 smartphone. Since this phone is now based on my beloved <a href="http://qt.nokia.com/">Qt framework</a>, I accepted with much pleasure.<br /><br />The really cool thing was that, by relying on the qt-mobility APIs (new Qt APIs for mobile application developers), we could enjoy cross-platform developing: all the code that I wrote for this player was tested and debuged on my computer, as a desktop application. Then, we deployed on the Nokia N900 and tried it there (and it worked seamlessly).<br /><br />For instance, this are some screenshots of msoma running as a desktop application (in Linux in this case):<br /><div style="text-align: center;"><div style="text-align: left;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinQDImuDMCPv4j1_hGPUZRS_IfGtK6G8Gxo-4kznF1AzBcimbef3wNNUWwCy0QlI3L-JryoGhuE_W9bd5yagMv3VuE2WNvaUk0RK0Yobc5QZtDSK7GKn81e_0sxM8zhaBsHulz/s1600/msoma_desktop1.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 251px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinQDImuDMCPv4j1_hGPUZRS_IfGtK6G8Gxo-4kznF1AzBcimbef3wNNUWwCy0QlI3L-JryoGhuE_W9bd5yagMv3VuE2WNvaUk0RK0Yobc5QZtDSK7GKn81e_0sxM8zhaBsHulz/s400/msoma_desktop1.png" alt="" id="BLOGGER_PHOTO_ID_5491076728302151522" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpT5DvouHL_is7EnYcCALuk3HzyvyxsV0t1cH2vWIHc7siEkeAj3ic_ppVybQ5aU5YyiYDzZnO1uew6dOhj3A_2jWlq4mhbfHV_OYsFRjZaWpfIZiWutjSgT71FZDD8DRRJ9Go/s1600/msoma_desktop2.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 251px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpT5DvouHL_is7EnYcCALuk3HzyvyxsV0t1cH2vWIHc7siEkeAj3ic_ppVybQ5aU5YyiYDzZnO1uew6dOhj3A_2jWlq4mhbfHV_OYsFRjZaWpfIZiWutjSgT71FZDD8DRRJ9Go/s400/msoma_desktop2.png" alt="" id="BLOGGER_PHOTO_ID_5491076916342145714" border="0" /></a><br />And this is a screenshot of the application running in the N900 (taken from <a href="http://www.andreagrandi.it/2010/07/03/announcing-msoma-maemomeego-client-for-somafm/">Andrea's blog post</a>):<br /><div style="text-align: center;"><br /></div></div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSJpaWbWDmf2lML6m_IgCJRQ4GGi1HfloPPH14UOKPnfbir5aLhLCefuzwe8bcry9TqLC9wL4pg6HOynA3DJzrK0_Kf6LIuyOxQEh0ezaenjDKwQXiVPbcBHjuvSDUpEK9ON-K/s1600/msoma_0.1.2.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSJpaWbWDmf2lML6m_IgCJRQ4GGi1HfloPPH14UOKPnfbir5aLhLCefuzwe8bcry9TqLC9wL4pg6HOynA3DJzrK0_Kf6LIuyOxQEh0ezaenjDKwQXiVPbcBHjuvSDUpEK9ON-K/s400/msoma_0.1.2.png" alt="" id="BLOGGER_PHOTO_ID_5491077278771004498" border="0" /></a><br /><div style="text-align: left;">Which is just a recompilation targeting Maemo (with this respect, the <a href="http://www.forum.nokia.com/info/sw.nokia.com/id/e920da1a-5b18-42df-82c3-907413e525fb/Nokia_Qt_SDK.html">Nokia Qt SDK</a>, based on QtCreator, is really helpful when developing).<br /><br />Of course, this is the very first version of this application, and surely the UI should be different in the desktop application with respect to the cellphone version (in order to be more usable in the mobile devices). But, as it is, it's already enjoyable (but I may be biased ;)<br /><br />Source code is available on <a href="http://gitorious.org/msoma">Gitorious</a> and it's always updated with latest version we're working on. If someone want to test the application, it's available in <strong>extras-devel</strong> repository ("msoma" under Multimedia section) of N900.<br /><br />In case you want to use it as a desktop application, please remember that you need qt-mobility. I <a href="http://tronprog.blogspot.com/2010/06/building-qt-mobility-in-ubuntu.html">blogged about the installation of qt-mobility in Linux</a>.<br /><br />We really want to thank, <a href="http://somafm.com/blogs/rusty/"><span style="font-weight: bold;">Rusty Hodge</span></a>, SomaFM's founder, who provided so many details about SomaFM for developing our application (and of course we thank him also for SomaFM itself :)<br /><br />We look forward to receiving feedback, patches, suggestions, and help! :)<br /><br />Our maemo profiles:<br /><ul><li><a style="font-weight: bold;" href="http://maemo.org/profile/view/andy80">Andrea Grandi</a></li><li><a href="http://maemo.org/profile/view/lorebett"><strong>Lorenzo Bettini</strong></a></li></ul></div></div>bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com1tag:blogger.com,1999:blog-35239346.post-77218483019708035842010-06-18T11:05:00.010+02:002010-07-07T10:49:06.922+02:00Building Qt-Mobility in UbuntuLately I started to try to develop applications for the Nokia N900, and the Maemo platform uses my beloved framework Qt :)<br /><br />In particular, Nokia started to develop the Qt-Mobility Framework. Quoting from their white paper:<br /><blockquote>The Qt Mobility Project presents a collection of related software frameworks and interfaces. The objective being to deliver new Qt APIs for mobile application developers. Using these new APIs, developers will be able to create cross-platform applications targeting Maemo, Symbian and other platforms. This suite of features also has components that will be desirable to all users, not just those with mobile devices, so Mobility has advantages even for the desktop user.<br /></blockquote>Thus, I wanted to try this project also on my Desktop (after all the intent of this framework is cross-platform development), and tried to compile qt-mobility on my Ubuntu/Kubuntu desktop. Unfortunately, I experienced many problems which now I seem to have solved, thus I'd like to share the steps to build qt-mobility from sources.<br /><br />First of all, when installing qt-mobility after compilation, some files will be created in your current Qt installation. Thus, since I wouldn't want to spoil my qt installation from ubuntu packages, which is installed in system path, I downloaded the new qt framework 4.6.3 from the <a href="http://qt.nokia.com/downloads">Nokia download site</a>, and installed it in a path of my home: <span style="font-weight: bold;">~/usr/local/Trolltech/qtsdk-2010.03</span>.<br /><br />Then, I installed some packages that are useful to build qt-mobility and to enjoy media contents such as mp3 and videos, relying on gstreamer (not all these packages may be necessary, but after some tests, at least these packages will make things work):<br /><blockquote>sudo apt-get install libasound2-dev libbluetooth-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev network-manager-dev libxv-dev gstreamer-tools gstreamer0.10-plugins-base gstreamer0.10-ffmpeg w32codecs ubuntu-restricted-extras gstreamer0.10-plugins-good freeglut3-dev</blockquote>Then, you need to get the sources of qt-mobility, and I got them from the git repository<br /><blockquote>git clone git://gitorious.org/qt-mobility/qt-mobility.git</blockquote><br />However, you may want to get the stable sources (e.g., from <a href="http://qt.nokia.com/products/appdev/add-on-products/catalog/4/new-qt-apis/mobility">qt-mobility download</a>).<br />Since I'm a big fan of "shadow builds" which won't spoil your source directory, I built qt-mobility in another directory of my home, separate from the directory where I have the sources of qt-mobility (in this example the sources are in <span style="font-weight: bold;">~/install/qt-mobility</span>): <span style="font-weight: bold;">~/build/qt-mobility/qt-4.6.3</span> (I specified the qt version I'm building qt-mobility with, since I may want to experiment with different qt versions):<br /><ul style="font-family: courier new;"><li>cd ~/build/qt-mobility/qt-4.6.3</li><li>PATH=~/usr/local/Trolltech/qtsdk-2010.03/qt/bin:$PATH ~/install/qt-mobility/configure -examples -prefix ~/usr/local/Trolltech/qt-mobility > output.txt</li></ul>Note that I temporarily change the PATH environment variable so that the configure script will use my local qt installation; I specify that I want to build the examples, and I redirect the output in a text file. This will also allows you to see possible errors during the configuration step (e.g., missing packages). Note also that I will install (once built) qt-mobility in my home directory in <span style="font-weight: bold;">~/usr/local/Trolltech/qt-mobility</span>.<br /><br />Once the configuration step is successful, you can start building qt-mobility and then install it:<br /><ul style="font-family: courier new;"><li>make</li><li>make install</li></ul>During the installation, if you take a look at the output, you will note that some files will be added to your qt installation, e.g.,<br /><ul><li>install -m 644 -p /home/bettini/build/qt-mobility/qt-4.6.3/features/mobility.prf /home/bettini/usr/local/Trolltech/qtsdk-2010.03/qt/mkspecs/features/</li><li>install -m 644 -p /home/bettini/build/qt-mobility/qt-4.6.3/features/mobilityconfig.prf /home/bettini/usr/local/Trolltech/qtsdk-2010.03/qt/mkspecs/features/<br /></li></ul>This way qt-mobility will be integrated in your qt framework (at least, this is what I presume).<br /><br />Now, you can test your qt-installation by running an example (which was built and installed), for instance the player demo or the weather demo:<br /><ul><li>~/usr/local/Trolltech/qt-mobility/bin/player</li><li>~/usr/local/Trolltech/qt-mobility/bin/weatherinfo_with_location</li></ul><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN9JCLxAVmwEHJU3f-hWV_xYYa5SzRHQl9OR1UAUJZ00RabvVQ2IfLJEZFwkBBpJ-eAnB6Ygghcva32kVWQVDKQk3U9_c1xAGWnUCFoOOAy6vo73eGmZ_3xtYxsj4rk_qt7PBR/s1600/qt-mobility1.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 200px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN9JCLxAVmwEHJU3f-hWV_xYYa5SzRHQl9OR1UAUJZ00RabvVQ2IfLJEZFwkBBpJ-eAnB6Ygghcva32kVWQVDKQk3U9_c1xAGWnUCFoOOAy6vo73eGmZ_3xtYxsj4rk_qt7PBR/s400/qt-mobility1.png" alt="" id="BLOGGER_PHOTO_ID_5484042414429153458" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiowMalm1_gfqC4WxoP6J6cylQv_n7GFFMI4dPmLqbDyHM13ejjAJ23yM6NY4WphIfriIKU4Zb5aUW2hwNRwd0fgmZvzfJtGTnR9Gxgk4ThJ3MC_0mvfxO2_W2m-XzLDBn9VAS/s1600/qt-mobility.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 242px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiowMalm1_gfqC4WxoP6J6cylQv_n7GFFMI4dPmLqbDyHM13ejjAJ23yM6NY4WphIfriIKU4Zb5aUW2hwNRwd0fgmZvzfJtGTnR9Gxgk4ThJ3MC_0mvfxO2_W2m-XzLDBn9VAS/s400/qt-mobility.png" alt="" id="BLOGGER_PHOTO_ID_5484042581662503794" border="0" /></a><br />Now, let's try to see whether we're able to use qt-mobility in our programs.<br /><br />We'll try to compile a very simple qt program using a class from the qt-mobility framework (QVideoWidget), though we won't do anything with that (just to see whether we can build the application).<br /><br />here's the files of our project<br /><br />myvideowidget.pro<table nosave=""><br /><tbody><tr nosave=""><br /><td nosave=""><br /><pre><tt>QT += core gui<br /><br />TARGET = myvideowidget<br />TEMPLATE = app<br /><br /><br />SOURCES += main.cpp\<br /> mainwindow.cpp<br /><br />HEADERS += mainwindow.h<br /><br />CONFIG += mobility<br />MOBILITY = multimedia<br /></tt></pre><br /></td><br /></tr><br /></tbody></table>mainwindow.h<table nosave="" bg style="color:white;"><br /><tbody><tr nosave=""><br /><td nosave=""><br /><pre><tt><b><span style="color:#000080;">#ifndef</span></b> MAINWINDOW_H<br /><b><span style="color:#000080;">#define</span></b> MAINWINDOW_H<br /><br /><b><span style="color:#000080;">#include</span></b> <span style="color:#ff0000;"><QMainWindow></span><br /><br /><b><span style="color:#0000ff;">class</span></b> <span style="color:#008080;">QVideoWidget</span><span style="color:#990000;">;</span><br /><b><span style="color:#0000ff;">class</span></b> <span style="color:#008080;">QMediaPlayer</span><span style="color:#990000;">;</span><br /><br /><b><span style="color:#0000ff;">class</span></b> <span style="color:#008080;">MainWindow</span> <span style="color:#990000;">:</span> <b><span style="color:#0000ff;">public</span></b> QMainWindow<br /><span style="color:#ff0000;">{</span><br /> Q_OBJECT<br /><br /><b><span style="color:#0000ff;">public</span></b><span style="color:#990000;">:</span><br /> <b><span style="color:#0000ff;">explicit</span></b> <b><span style="color:#000000;">MainWindow</span></b><span style="color:#990000;">(</span><span style="color:#008080;">QWidget</span> <span style="color:#990000;">*</span>parent <span style="color:#990000;">=</span> <span style="color:#993399;">0</span><span style="color:#990000;">);</span><br /><br /><b><span style="color:#0000ff;">private</span></b><span style="color:#990000;">:</span><br /> <span style="color:#008080;">QVideoWidget</span> <span style="color:#990000;">*</span>videoWidget<span style="color:#990000;">;</span><br /> <span style="color:#008080;">QMediaPlayer</span> <span style="color:#990000;">*</span>player<span style="color:#990000;">;</span><br /><span style="color:#ff0000;">}</span><span style="color:#990000;">;</span><br /><br /><b><span style="color:#000080;">#endif</span></b> <i><span style="color:#9a1900;">// MAINWINDOW_H</span></i><br /></tt></pre><br /></td><br /></tr><br /></tbody></table>mainwindow.cpp<table nosave="" bg style="color:white;"><br /><tbody><tr nosave=""><br /><td nosave=""><br /><pre><tt><b><span style="color:#000080;">#include</span></b> <span style="color:#ff0000;"><QMediaPlayer></span><br /><b><span style="color:#000080;">#include</span></b> <span style="color:#ff0000;"><QVideoWidget></span><br /><b><span style="color:#000080;">#include</span></b> <span style="color:#ff0000;"><QTextEdit></span><br /><br /><b><span style="color:#000080;">#include</span></b> <span style="color:#ff0000;">"mainwindow.h"</span><br /><br />MainWindow<span style="color:#990000;">::</span><b><span style="color:#000000;">MainWindow</span></b><span style="color:#990000;">(</span><span style="color:#008080;">QWidget</span> <span style="color:#990000;">*</span>parent<span style="color:#990000;">)</span> <span style="color:#990000;">:</span><br /> <b><span style="color:#000000;">QMainWindow</span></b><span style="color:#990000;">(</span>parent<span style="color:#990000;">)</span><br /><span style="color:#ff0000;">{</span><br /> videoWidget <span style="color:#990000;">=</span> <b><span style="color:#0000ff;">new</span></b> <b><span style="color:#000000;">QVideoWidget</span></b><span style="color:#990000;">(</span><b><span style="color:#0000ff;">this</span></b><span style="color:#990000;">);</span><br /><br /> <b><span style="color:#000000;">setCentralWidget</span></b><span style="color:#990000;">(</span>videoWidget<span style="color:#990000;">);</span><br /><span style="color:#ff0000;">}</span><br /><br /></tt></pre><br /></td><br /></tr><br /></tbody></table><br />main.cpp<br /><table nosave="" bg style="color:white;"><br /><tbody><tr nosave=""><br /><td nosave=""><br /><pre><tt><b><span style="color:#000080;">#include</span></b> <span style="color:#ff0000;"><QtGui/QApplication></span><br /><b><span style="color:#000080;">#include</span></b> <span style="color:#ff0000;">"mainwindow.h"</span><br /><br /><span style="color:#009900;">int</span> <b><span style="color:#000000;">main</span></b><span style="color:#990000;">(</span><span style="color:#009900;">int</span> argc<span style="color:#990000;">,</span> <span style="color:#009900;">char</span> <span style="color:#990000;">*</span>argv<span style="color:#990000;">[])</span><br /><span style="color:#ff0000;">{</span><br /> <span style="color:#008080;">QApplication</span> <b><span style="color:#000000;">a</span></b><span style="color:#990000;">(</span>argc<span style="color:#990000;">,</span> argv<span style="color:#990000;">);</span><br /> <span style="color:#008080;">MainWindow</span> w<span style="color:#990000;">;</span><br /> w<span style="color:#990000;">.</span><b><span style="color:#000000;">show</span></b><span style="color:#990000;">();</span><br /> <b><span style="color:#0000ff;">return</span></b> a<span style="color:#990000;">.</span><b><span style="color:#000000;">exec</span></b><span style="color:#990000;">();</span><br /><span style="color:#ff0000;">}</span><br /></tt></pre><br /></td><br /></tr><br /></tbody></table><br />now, you should run the qmake of your qt installation you've used to build qt-mobility, thus<br /><ul style="font-family: courier new;"><li>~/usr/local/Trolltech/qtsdk-2010.03/qt/bin/qmake myvideowidget.pro</li></ul>and then run make, hopefully you should get no error. Note that we haven't named our qt-mobility installation directory anywhere here; there's no need to, since your qt installation was modified by qt-mobility, so that qmake will set all the variables for include files and libraries also for the qt-mobility path! In fact, you should see these compilation command lines:<br /><ul><li>g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I../../../../usr/local/Trolltech/qtsdk-2010.03/qt/mkspecs/linux-g++ -I../../myvideowidget -I../../../../usr/local/Trolltech/qtsdk-2010.03/qt/include/QtCore -I../../../../usr/local/Trolltech/qtsdk-2010.03/qt/include/QtNetwork -I../../../../usr/local/Trolltech/qtsdk-2010.03/qt/include/QtGui -I../../../../usr/local/Trolltech/qtsdk-2010.03/qt/include/QtOpenGL -I../../../../usr/local/Trolltech/qtsdk-2010.03/qt/include -I/home/bettini/usr/local/Trolltech/qtsdk-2010.03/qt/include/QtMultimediaKit <span style="font-weight: bold;">-I../../../../usr/local/Trolltech/qt-mobility/include -I../../../../usr/local/Trolltech/qt-mobility/include/QtMultimediaKit</span> -I/usr/X11R6/include -I. -I../../myvideowidget -I. -o mainwindow.o ../../myvideowidget/mainwindow.cpp</li><li>g++ -Wl,-O1 -Wl,-rpath,/home/bettini/usr/local/Trolltech/qtsdk-2010.03/qt/lib -Wl,-rpath,/home/bettini/usr/local/Trolltech/qt-mobility/lib -o myvideowidget main.o mainwindow.o moc_mainwindow.o -L/home/bettini/usr/local/Trolltech/qtsdk-2010.03/qt/lib -L/usr/X11R6/lib <span style="font-weight: bold;">-L/home/bettini/usr/local/Trolltech/qt-mobility/lib</span> -lQtMultimediaKit -lQtOpenGL -L/home/bettini/usr/local/Trolltech/qtsdk-2010.03/qt/lib -L/usr/X11R6/lib -lQtGui -lQtNetwork -lQtCore -lGLU -lGL -lpthread</li></ul>Now you can enjoy qt-mobility in your desktop :)bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com2tag:blogger.com,1999:blog-35239346.post-26668368893765754102010-05-11T21:14:00.004+02:002010-05-11T21:18:34.692+02:00Eclipse internal Web Browser in Ubuntu LucidAfter switching to Ubuntu Lucid I noted that in my eclipse php installation the internal web browser was not working anymore since it was lacking some mozilla libraries.<br /><br />In that case, it is enough to install the current xulrunner:<br /><br /><blockquote></blockquote><blockquote>sudo apt-get install xulrunner-1.9.2</blockquote><br />and the internal web browser in eclipse will work again! :)<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgllybj-W9bqn-ClZFO4UXhgI7FRwXJmc8UFjri7FCeM-13ZYqr14i74sp5xM1HBQUTbU3dAjGG3OkVKvo1frCoHL035F3dYt4pLboRPtK3IAnHofehN2rwKs-UpHbaEyzStH8O/s1600/eclipse_web_browser.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 293px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgllybj-W9bqn-ClZFO4UXhgI7FRwXJmc8UFjri7FCeM-13ZYqr14i74sp5xM1HBQUTbU3dAjGG3OkVKvo1frCoHL035F3dYt4pLboRPtK3IAnHofehN2rwKs-UpHbaEyzStH8O/s400/eclipse_web_browser.png" alt="" id="BLOGGER_PHOTO_ID_5470093789022503074" border="0" /></a>bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com1tag:blogger.com,1999:blog-35239346.post-31311211227631141182010-05-05T18:18:00.011+02:002010-05-05T18:35:57.524+02:00PhpBibliography 1.0 - using CakePhpThe brand new release of <a href="http://phpbibliography.sourceforge.net/">PhpBibliography</a> is out!<br /><br />PhpBibliography allows you to publish your bibliography online (and to edit it via web).<br />It is implemented in <span style="font-weight: bold;">Php 5</span> and uses <span style="font-weight: bold;">MySql 5</span> (however, it might work also with Php 4, and also with MySql 4, but I'm not testing this).<br /><br /><span class="attention">This is a complete rewriting using <a href="http://www.cakephp.org/">CakePhp</a></span>, the old version site is available <a href="http://phpbibliography.sourceforge.net/phpbibliography-old/">here</a>.<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXkV92mBnkcu8LBktFVoVJIyySekHWwfBRINeu0aYeA8ygpCeDO3_jG-fON-UkCkOLRzPG7TLj9y2WZgC_hL0tv5B_TDwpetcXDn6gLo4VWlLvmdLeiIitj8g5Gi3Ltp4uqeCp/s200/cake-logo.png"><img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 111px; height: 111px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXkV92mBnkcu8LBktFVoVJIyySekHWwfBRINeu0aYeA8ygpCeDO3_jG-fON-UkCkOLRzPG7TLj9y2WZgC_hL0tv5B_TDwpetcXDn6gLo4VWlLvmdLeiIitj8g5Gi3Ltp4uqeCp/s200/cake-logo.png" alt="" border="0" /></a><br /><br />CakePhp is really a wonderful framework and I really enjoyed using it for PhpBibliography.<br /><br />Hopefully, PhpBibliography is now more stable, relying on many mechanisms offered by CakePhp, and it looks nicer (in my opinion at least).<br /><br />In the near future, I'm also planning to allow customization of the look by relying on CakePhp themes.<br /><br /><span class="attention">If you have an already installed version of PhpBibliography (earlier than version 1.x) you will need to follow the instructions you find at this </span><a href="http://phpbibliography.sourceforge.net/phpbibliography-old/upgrade_to_1.html">link</a>.<br /><br />PhpBibliography now comes with a web based installation procedure which should minimize the efforts of the user who installs it (hopefully).<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7TLnPMnC60699ZU3adBcXc2Kos_o_JURzKY48wei9GdyJXVNylrFlQvZuqA9iaXroIhnV0GHpKjBQdM6TcAmnfnDG8eWZM6fG1GQfUYALqLCAeul7CFfUwxKce22Fr72TnhHm/s1600/install_1.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 313px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7TLnPMnC60699ZU3adBcXc2Kos_o_JURzKY48wei9GdyJXVNylrFlQvZuqA9iaXroIhnV0GHpKjBQdM6TcAmnfnDG8eWZM6fG1GQfUYALqLCAeul7CFfUwxKce22Fr72TnhHm/s400/install_1.png" alt="" id="BLOGGER_PHOTO_ID_5467821969065032370" border="0" /></a><br />These are the main features provided by PhpBibliography:<br /><ul><li>Automatic generation of bibtex for papers (unless a manual bib item is specified when editing the paper).</li><li>For each paper two files can be uploaded and two links can be specified.</li><li>Papers can be searched with criteria about their fields.</li><li>Besides standard fields, new <span style="font-style: italic;">attributes</span> can be specified for papers; attributes can be <span style="font-style: italic;">selectable</span>, i.e., the logged user can choose among a(n extensible) set of values and <span style="font-style: italic;">multiple</span>, i.e., a paper can be given several values for that attribute; an example of selectable/single attribute is "Publisher", an example of selectable/multiple attribute is "Keyword", and an example of non-selectable attribute is "DOI".<br /></li><li>Papers can be specified as <span style="font-style: italic;">private</span> (visible only to logged users).</li><li>Reports can be generated by filtering by author, by value and by grouping up to two levels (e.g., show only papers of a given authors, grouped by year and by paper type).</li><li>RSS feeds are available for search results, reports and paper lists.</li><li>Lists of papers, and results of reports and searches can be included in other webpages (by using the <span style="font-style: italic;">bare</span> layout).</li><li>Papers can be imported from <a href="http://www.informatik.uni-trier.de/%7Eley/db/index.html">DBLP</a>.</li><li>Searches for possible duplicate papers.</li><li>Papers can be inserted through bibtex items and bibtex files.</li></ul>And here are some screenshots of the new interface:<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBub7escoHolRbaFxcLEyNvPstU6IVHNA3V77Hpm-fLcU8EbXr1mV23W76LzdD5gnInLL95zUggV_J704y4vwQla0BSWGUFj4cPSh2nwor8KxgJA3iXE7qMqgmdeILspCsm4PJ/s1600/phpbibliography.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 334px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBub7escoHolRbaFxcLEyNvPstU6IVHNA3V77Hpm-fLcU8EbXr1mV23W76LzdD5gnInLL95zUggV_J704y4vwQla0BSWGUFj4cPSh2nwor8KxgJA3iXE7qMqgmdeILspCsm4PJ/s400/phpbibliography.png" alt="" id="BLOGGER_PHOTO_ID_5467823876579795522" border="0" /></a>The main paper view<br /><br /></div><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7NfcE7tD0dEsUg8Vls-gKXpdeeJuYpZcJHYaPEaAIao2dq-TXWlyBDl_NRLJOTztGKnLy7mGGrO9ITqkoewdHLdYhbcamPLUH4YdDqMmD3D1K92Fna9Wr7ryZ9NHDyt3B3cZL/s1600/phpbibliography1.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 334px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7NfcE7tD0dEsUg8Vls-gKXpdeeJuYpZcJHYaPEaAIao2dq-TXWlyBDl_NRLJOTztGKnLy7mGGrO9ITqkoewdHLdYhbcamPLUH4YdDqMmD3D1K92Fna9Wr7ryZ9NHDyt3B3cZL/s400/phpbibliography1.png" alt="" id="BLOGGER_PHOTO_ID_5467823999303260002" border="0" /></a>Recently modified papers<br /></div><br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF2psexuaWSkIYksroPOCpI9DArQHpDoO7K_ohle_hWHWmmrIoHvUJvD-mRipg-pmTKCDiZup8_HmBeU5Fk3NLKPdF61_oPv5X_ejr2DyNESfbg_siIB8GB4dFzN12cv8fyofE/s1600/phpbibliography2.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 334px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF2psexuaWSkIYksroPOCpI9DArQHpDoO7K_ohle_hWHWmmrIoHvUJvD-mRipg-pmTKCDiZup8_HmBeU5Fk3NLKPdF61_oPv5X_ejr2DyNESfbg_siIB8GB4dFzN12cv8fyofE/s400/phpbibliography2.png" alt="" id="BLOGGER_PHOTO_ID_5467824102102451570" border="0" /></a>Let's generate a report...<br /><br /></div><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG4ap8jkJ3lSyDMhz5MPlV8Lx45eAR1i6_9VXIRuml1LbYF8iMTPtaZU43mqfthuRbFkE92VFkL2Hy3fN9QRD0Ij1oNX9gui-L4skK6XvcrQ1jmek0s4eRdImQ13nsQXzmZDhe/s1600/phpbibliography3.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 334px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG4ap8jkJ3lSyDMhz5MPlV8Lx45eAR1i6_9VXIRuml1LbYF8iMTPtaZU43mqfthuRbFkE92VFkL2Hy3fN9QRD0Ij1oNX9gui-L4skK6XvcrQ1jmek0s4eRdImQ13nsQXzmZDhe/s400/phpbibliography3.png" alt="" id="BLOGGER_PHOTO_ID_5467824174886931826" border="0" /></a>...and this is the result.<br /></div><br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhImhyyFwLDDs2aZ_Qq_AEii6yBN6IPLyBonbUOuiKsgq3zN_8ZHV-qqKRntUrH52wO4n4Z3L8Is6qAC1sPNQM6ym7pcAynxzgYcJ6_-d5ltptu_6CBD91qotHyUjq7hqgV7X0k/s1600/phpbibliography4.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 334px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhImhyyFwLDDs2aZ_Qq_AEii6yBN6IPLyBonbUOuiKsgq3zN_8ZHV-qqKRntUrH52wO4n4Z3L8Is6qAC1sPNQM6ym7pcAynxzgYcJ6_-d5ltptu_6CBD91qotHyUjq7hqgV7X0k/s400/phpbibliography4.png" alt="" id="BLOGGER_PHOTO_ID_5467824247716143730" border="0" /></a>The administrative interface (for logged users)<br /><br /></div><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp3WMjUXmBvBFIIBxsNpViGdw1tNH9RG2TZxumATFvVrINZDX9XVT-WHtonRc61441BTg1fV1NccUDS5SdJPPJpS43FnLIXpdwytD16EQmDk7kmzKaYDjps8NznXFM7wYgQFN-/s1600/phpbibliography5.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 334px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp3WMjUXmBvBFIIBxsNpViGdw1tNH9RG2TZxumATFvVrINZDX9XVT-WHtonRc61441BTg1fV1NccUDS5SdJPPJpS43FnLIXpdwytD16EQmDk7kmzKaYDjps8NznXFM7wYgQFN-/s400/phpbibliography5.png" alt="" id="BLOGGER_PHOTO_ID_5467824320442217506" border="0" /></a>Papers shown in a table ready to be edited or deleted.<br /><br /></div><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwBxW4-tvxnWbDUiDq8kIGhdjq0NDgilWMk4uhy7UcMmKQU48OnoXlknHGhR3cV6TORCevr9zsE1EJMmYfRnP3p3riDP3PWagr33tp-ke4k8ZaI5gHsy_hqeQJP4Qp5P96NhZw/s1600/phpbibliography6.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 334px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwBxW4-tvxnWbDUiDq8kIGhdjq0NDgilWMk4uhy7UcMmKQU48OnoXlknHGhR3cV6TORCevr9zsE1EJMmYfRnP3p3riDP3PWagr33tp-ke4k8ZaI5gHsy_hqeQJP4Qp5P96NhZw/s400/phpbibliography6.png" alt="" id="BLOGGER_PHOTO_ID_5467824390789100818" border="0" /></a>The view of a paper<br /></div><br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2iYIVq1voTzGnDNk8VXCRcC8Xrf_pyXn7srrmcD2X7y7mep3qY1HBJ8tI3QxIWTZCQM2xtvkv_ceUd7kk-eGySEDLKcZuIhtSAgj_b4VjIgZijCkKJ1ZGQck9xfrBMsY9aRDu/s1600/phpbibliography7.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 334px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2iYIVq1voTzGnDNk8VXCRcC8Xrf_pyXn7srrmcD2X7y7mep3qY1HBJ8tI3QxIWTZCQM2xtvkv_ceUd7kk-eGySEDLKcZuIhtSAgj_b4VjIgZijCkKJ1ZGQck9xfrBMsY9aRDu/s400/phpbibliography7.png" alt="" id="BLOGGER_PHOTO_ID_5467824463956860834" border="0" /></a>The co-authors of an author<br /><br /></div>bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com0tag:blogger.com,1999:blog-35239346.post-45195138516616880142010-05-03T14:07:00.002+02:002010-05-03T14:10:18.152+02:00Package php-doc missing in Ubuntu LucidAfter installing the new Ubuntu Lucid I discovered that the package php-doc is not available anymore. Since I often work offline, having the php documentation installed to be browsed offline is a must for me.<br /><br />It looks like for the moment that package is <a href="https://lists.ubuntu.com/archives/ubuntu-devel-announce/2010-April/000700.html">not available due to build failures</a>.<br /><br />Fortunately, the package for karmic can be installed without any problem, and you can <a href="http://packages.ubuntu.com/karmic/all/php-doc/download">download it from here</a>. :)bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com1tag:blogger.com,1999:blog-35239346.post-22979888798483644892010-03-11T22:39:00.002+01:002010-03-11T22:45:01.149+01:00Source-Highlight-Ide 1.0I've just released a new version of <span style="font-weight: bold;">Source-Highlight-IDE</span>, an IDE for <a href="http://www.gnu.org/software/src-highlite">GNU Source-highlight</a> (given a source file, produces a document with syntax highlighting).<br /><br />Sourcehighlightide home page is <a href="http://srchighliteide.sourceforge.net/">http://srchighliteide.sourceforge.net</a>.<br /><br />This new version is a complete rewriting using Qt4 (instead of KDE3) and it is based on Source-Highlight-Qt (<a href="http://tronprog.blogspot.com/2009/07/source-highlight-qt-library-for.html">which I've already blogged about</a>) additional library, <a href="http://srchiliteqt.sourceforge.net/">http://srchiliteqt.sourceforge.net</a>, which provides highlighting in Qt relying on GNU Source-Highlight.<br /><br />Sourcehighlightide is useful when you have to develop a new language definition file for source-highlight. A language definition file makes use of regular expressions, and if they become complex it might be hard to understand how they are matched. Source-highlight already provides some mechanisms for debugging a language definition file; Sourcehighlightide provides a graphical interface to debug a language definition file: it will show which regular expression is matched during the formatting of the input file, and you can process the input file step by step (i.e., an expression at time), and you can also see the output while it is produced.<br /><br />As you can see from the following screenshot, Sourcehighlightide is a MDI (Multi Document Interface) application, so you can have many files open at one time. Moreover, it provides the basic commands that are common to every GUI application, so we will assume their knowledge throughout this manual.<br /><br />The online manual is available <a href="http://srchighliteide.sourceforge.net/doc/index.html">here</a>.<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii_P9OmxACxTnWHIxXTZ396ZJPgCQdR-cwa7GXfB09QPVQsmEn-wN5CGKMeOjpXU2DmcmKpGLI9ItgpvdCPDEgD_Y5UtXovO1Dc8mldI1FquDWsOSJw1creRyRkMj0uEG9vJ91/s1600-h/source-highlight-ide.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 305px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii_P9OmxACxTnWHIxXTZ396ZJPgCQdR-cwa7GXfB09QPVQsmEn-wN5CGKMeOjpXU2DmcmKpGLI9ItgpvdCPDEgD_Y5UtXovO1Dc8mldI1FquDWsOSJw1creRyRkMj0uEG9vJ91/s400/source-highlight-ide.png" alt="" id="BLOGGER_PHOTO_ID_5447494940471810178" border="0" /></a>The main window<br /></div><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2aWDL5F5IUAtqn3zxr1YdMlV5qx2N3Mzv6OenpepIW60l4HToz7J4jF0e1KvE79nUV00XzBlWns1LAzukXOJcFuv8j0JkEI7BN68RY69TbccipoMTb6rsijyaxQuQYKxtnL-b/s1600-h/source-highlight-ide-debug.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 305px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2aWDL5F5IUAtqn3zxr1YdMlV5qx2N3Mzv6OenpepIW60l4HToz7J4jF0e1KvE79nUV00XzBlWns1LAzukXOJcFuv8j0JkEI7BN68RY69TbccipoMTb6rsijyaxQuQYKxtnL-b/s400/source-highlight-ide-debug.png" alt="" id="BLOGGER_PHOTO_ID_5447495035904780882" border="0" /></a>Debugging a language definition file<br /></div>bettohttp://www.blogger.com/profile/16462664783219149049noreply@blogger.com0