linux Syndicate content

warning: Creating default object from empty value in /www/htdocs/w0065fc9/milianw/modules/taxonomy/taxonomy.pages.inc on line 33.

» Kate polishing

Thu, 01/21/2010 - 02:09

Phew, I just finished some last-minute backports to the KDE 4.3.5 branch. Lets hope the bug fixes I and pletourn did are as good as they look. Expect a much more stable Kate for 4.3.5 & 4.4! We managed to fix two bugs which are potentially the cause for dozens of bug reports, all seemingly random. Lets see whether our fixes hold up to our hopes!

Other than that: You should look forward to Kate scripting (with JavaScript) in 4.4. It’s dead simple but actually useful. In the utils.js file we ship with Kate there are now the following tools (all operate on the selection or - if none exists - on the whole document):

  • sort - simple sorting
  • natsort - natural sorting
  • uniq - filter duplicates
  • trim - remove leading & trailing whitespace
  • ltrim - remove leading whitespace
  • rtrim - remove trailing whitespace

Do you have more ideas for such simple helper functions?

» progress in PHP support for KDevelop

Wed, 01/20/2010 - 14:44

Hey everyone. Been some time since I last blogged… I want to take the chance to give you all a bit of overview over the last changes in the PHP plugin for KDevelop:

Performance Improvements

I spent quite some time profiling various aspects of the PHP plugin, be it parsing and DUChain building over to (just yesterday) code completion. I’m confident to say that I found (and removed) quite a few bottlenecks, making the plugin much more comfortable to use.

I’m really blown away time over time again by valgrind & KCachegrind… What would we do without these tools?

Documentation

An (imo) very strong point for using KDevelop for PHP programming is it’s seamless support for documentation. Be it the “simple” inline documentation in the Declaration Tooltips or the extended integration of the remote PHP.net docs. But these past days I improved our generator for the inline documentation of built-in PHP language constructs considerably:

  • add documentation for function/method parameters
  • add @since where appropriate
  • fix some missing declarations or bugs, esp. some that where part of SPL

These changes increased the size of the generated file to whopping 3.1M. This was too much for me and hence I added support to ship this file zipped (i.e. now it’s 80% smaller) and we decompress it transparently with the use of KZip. Adding such a feature was a breeze, so nice to work with the KDE Api :)

There are still a few things missing and stuff I plan to improve here, so stay tuned for more news in this regard.

» PHP & PHP-Docs now in extragear/sdk/kdevelop-plugins

Fri, 01/08/2010 - 18:58

Hey everyone! The PHP & PHP-Docs plugins for KDevelop now moved to Extragear! The new locations are:

  1. svn+ssh://svn.kde.org/home/kde/trunk/extragear/sdk/kdevelop-plugins/php
  2. svn+ssh://svn.kde.org/home/kde/trunk/extragear/sdk/kdevelop-plugins/php-docs

Or the anonsvn equivalent:

  1. svn://anonsvn.kde.org/home/kde/trunk/extragear/sdk/kdevelop-plugins/php
  2. svn://anonsvn.kde.org/home/kde/trunk/extragear/sdk/kdevelop-plugins/php-docs

Happy coding!

» Will code for food

Tue, 12/22/2009 - 05:34

Ha, what a bit of a bribe can do to me… Someday earlier today a user of the PHP plugin for KDevelop brought up the flickering issue in it again. Well as I told him: I myself find it very annoying and wanted to fix it since quite some time, but never got around to it… Usually that would be it and I’d go watch some more FamilyGuy until I’m in the mood to track this bugger down. But well, thankfully Phlogi wasn’t so easy to dispatch:

<Phlogi> milian: ok… I’ll send you pizza and beer if you fix this!

Hours of gdb sessions later, I finally committed a fix. So Phlogi, if you read this: You owe me ;-)

To all others: If you tried the PHP plugin out and the flickering was too much for you: Give it a try again! I’m personally totally overwhelmed, the difference is huge! I often perceived the PHP plugin to be magnitudes slower than the C++ one. Well, looks like most of this was only due to the flickering. Now things are much smoother.

Happy holidays!

» PHP and PHP-Docs plugins now up for review (meaning: SVN location moved!)

Thu, 12/17/2009 - 22:29

Hey all!

Just a quick note: Niko and me moved PHP & PHP-Docs to kdereview, we hope to move both plugins to extragear/sdk/kdevelop-plugins. So, if I understood things correctly, after a two week period the plugins will get moved there (well, if we pass the review, but I think we can do that).

So for anybody that uses the plugins from SVN, you’ll have to relocate. The new addresses are:

  • /trunk/kdereview/kdevelop-php
  • /trunk/kdereview/kdevelop-php-docs

See you in two weeks :)

» KDevelop & KWrite/Kate hacksprint 2010 in Berlin

Mon, 11/16/2009 - 16:38

Hey everybody!

If you are a KDevelop and/or Kate/Kwrite developer and do not read the mailing lists: There’s a hack sprint coming up in Berlin in 2010. I think there’ve been enough sprints in Berlin already so that you know it’s a great city for such an event. Though this time it won’t be at KDAB or Nokia offices, but at the Physics Faculty of the FU-Berlin. Since I (currently) work there as an IT admin, it was my first choice and worked out. I hope it will be a good location for the meeting. If you want to attend, vote on doodle:

http://www.doodle.com/vkyh9up9794zr4s8

But you probably also should register either on the KDevelop or KWrite mailing lists so I have some kind of way to contact you.

PS: in unrelated news I’ll do an internship at KDAB next year! yay

» Improving KDevelop-PG-Qt

Mon, 10/26/2009 - 19:13

Good news everyone :)

Documentation

After years of pretty much no documentation (except looking at the sources…), The_User aka. Jonathan Schmidt-Dominé started documenting the parser generator that is used for most KDevelop language plugins (java, python, php, …). You can find it here: http://techbase.kde.org/Development/KDevelop-PG-Qt_Introduction

It has to be improved and more examples have to be put in there, but it’s already a huge improvement over the situation before…

Performance

In related news I did some profiling on the parsing of the quite big file that includes all internal PHP declarations (i.e. all functions, classes, definitions,…). It drops in at a whopping 1.9M, with ~80k lines. Well, turns out that this showed a pretty easy to fix bottleneck in KDevelop-PG’s LocationTable, which used to use a linear lookup algorithm. Profiling showed that nearly 75% was spent in that function. But I used the past tense for a reason:

I replaced it with an algorithm that combines a relative search (i.e. relative to the last lookup) with a binary search fallback. That’s comparatively blazingly fast. I added some benchmarks to KDevelop-PG-Qt that proofs that (benchmark below run with release mode build):

  1. ********* Start testing of KDevPG::Benchmarks *********
  2. Config: Using QTest library 4.5.2, Qt 4.5.2
  3. PASS : KDevPG::Benchmarks::initTestCase()
  4. RESULT : KDevPG::Benchmarks::positionAt():"initial, linear":
  5. 1,184.0 msec per iteration (total: 11840, iterations: 10)
  6. RESULT : KDevPG::Benchmarks::positionAt():"initial, random":
  7. 1,008.5 msec per iteration (total: 10085, iterations: 10)
  8. RESULT : KDevPG::Benchmarks::positionAt():"relative, linear":
  9. 1.3 msec per iteration (total: 14, iterations: 10)
  10. RESULT : KDevPG::Benchmarks::positionAt():"relative, random":
  11. 1,185.0 msec per iteration (total: 11850, iterations: 10)
  12. RESULT : KDevPG::Benchmarks::positionAt():"binary, linear":
  13. 31.1 msec per iteration (total: 312, iterations: 10)
  14. RESULT : KDevPG::Benchmarks::positionAt():"binary, random":
  15. 39.2 msec per iteration (total: 392, iterations: 10)
  16. RESULT : KDevPG::Benchmarks::positionAt():"binary & relative, linear":
  17. 0.8 msec per iteration (total: 8, iterations: 10)
  18. RESULT : KDevPG::Benchmarks::positionAt():"binary & relative, random":
  19. 40.2 msec per iteration (total: 402, iterations: 10)
  20. PASS : KDevPG::Benchmarks::positionAt()
  21. PASS : KDevPG::Benchmarks::cleanupTestCase()
  22. Totals: 3 passed, 0 failed, 0 skipped
  23. ********* Finished testing of KDevPG::Benchmarks *********

In our “realworld” phpfunctions.php example the DUChain building process got twice as fast (in debug mode though, but still).

We should probably get lost of the LocationTable altogether and use an existing container (QList, QVector, QLinkedList,… or any STL variant of them). But this would mean more profiling, and well, lets see when we get to it… But just got a reply on the KDevelop list showing interest on this, so maybe someone does that eventually!

Profiling rocks, and KCacheGrind is such a great application. I love such visualization. Well done! And the QTestLib benchmark utilities are also very solid, nice!

PS: KDevelop beta6 is in the pipelines and we’ll release a beta1 of the PHP plugin together with it. Packagers and users rejoice :)

» first experience with Archlinux

Sun, 10/18/2009 - 02:24

So, I kinda messed up my desktop right after the upgrade to karmic, because I was too greedy for performance and converted my root file system to ext4. Well, that worked like a charm on my laptop, but it broke my desktop. This is in no way karmic’s fault, it’s my own misbehavior. Thankfully I could rescue most of my data.

Since I’d had to reinstall anyways, I decided to finally try out Archlinux. I find the rolling release mantra very intriguing. Together with a “simpler” packaging, namely no splitting between -dev and -dbg packages like debian/ubuntu does, this is destined to be a good environment for a developer. I always hated it to track down missing -dev packages when compiling software. And don’t get me started on outdated software in repos… I just compiled kdelibs and the only missing build dependency was hspell, that I don’t need anyways. Under Jaunty I had to compile stuff from kdesupport to fulfill updated dependencies. And the list of not-found optional dependencies was huge, since I did not spent time to install all those -dev packages by hand…

My first impression of Archlinux is very good so far. I also finally migrated to 64bit wich works like a charm, no issues with flash or anything. Since I never used a 64bit Ubuntu/Debian I’m not sure, whether the perceived performance increase is due to the switch to 64bit or whether Archlinux optimized packages are responsible. Probably both. Nevertheless I can safely say that my system feels snappier than before.

Of course, the installation and initial setup is not as straight forward / easy as with Debian/Ubuntu: Yet it’s no big deal for anyone with some Linux experience. And, once everything is setup, you are running KDE again, so no real difference. Thanks to the Chakra team for kdemod, it works like a charm!

I might have spent a bit more time during the installation / initial configuration, but I think this would have happened also if I’d installed any other distro I’ve never used before, like OpenSuse or Fedora.

Oh and since I can install sudo I can keep my old habits. Neat.

The only thing I miss so far is aptitude with it’s straight forward command structure. Yaourt/Pacman is fast and nice, esp. with pacman-color, but the commands don’t feel as straight forward to me… Personal preference I’d say.

To conclude: Archlinux is very nice, I can wholeheartedly recommend using it so far. Probably nothing for a novice Linux user, yet perfect for advanced users. Very good as a development environment. Fast. Up to date. I like it :)

Now I can finally continue hacking on Kate/Kdelibs again :) I’m currently in the process of refactoring Kate’s implementation of the TemplateInterface. Even in it’s current state it already implements features like mirrored snippets and the like. But once I’ve finished with the cleanup I will try to implement some more of the features that are found in e.g. yasnippet for Emacs. I really wonder why nobody else did that already…

Once this is finished, you can expect that I will deeply integrate that feature in various places in KDevelop, especially for code completion, snippet plugin etc. pp. Stay tuned!

» KDevelop PHP digest - August to Oktober 2009

Fri, 10/02/2009 - 15:08

Hi there again! I’ve been silent again on my blog, but didn’t rest on development. In the one and a half months since the last digest, I started writing a PHP application This finally made me eat my own dog food :). It resulted in lots of polishing and quite a few bug fixes for the PHP plugin in KDevelop. Here’s a list of what I think are the notably changes since the last digest:

(Note: to view screenshots, go to the bottom of this article.)

  • refactoring of parts of the Code Completion code, should already result in faster code under certain situations
  • properly mark constants as “Kind: Constant” in the declaration tooltips
  • offer argument hints for ctors during code completion in class init statements
  • greatly improve the generate inline documentation of built-in PHP functions, classes, properties etc. pp.
    • add documentation of public properties
    • support aliased functions (thanks to Victor Grischenko for his patch)
    • show more/all documentation, and not only the first paragraph
    • fix type-lookup
    • don’t get confused when a documentation file documents both, a method and a function (greatly improves e.g. MySQLi documentation)
  • don’t offer “jump to declaration” for built-in PHP declarations
  • add support for list(...) statement
  • cleanup code-completion list, esp. show the return type of functions in the prefix field, and not something a la “function ReturnType ($arg1, $arg2, …)”
  • improve the code-completion for include/require statements
  • add language constructs to code completion (e.g. class, while, foreach, print, …)
  • show declaration tooltip for magic constants, showing their current value
  • make functions, methods and classes case-insensitive, just like PHP handles them
  • some performance improvements, especially in code completion and parsing of the generated file containing php-internal declarations
  • lots of bug fixes, don’t want to iterate them all ;-)

I created a Flickr account and will push screenshots to it for every upcoming digest I do. To see some of the features I talk about above, visit: http://www.flickr.com/photos/milianw/sets/72157622375662249/detail/

EDIT: A note to those that want to try this out , but cannot / don’t want to compile it: I heard that there is / will be an AUR package for Arch users available. And I’d really appreciate it if others could create packages for their favorite distribution as well. You’ll need bleeding-edge kdevplatform + kdevelop though!

» Spotlight: linux-minidisc

Thu, 09/03/2009 - 18:36

Hi there!

Today I want to abuse the fact, that my blog is aggregated on some planets, to bring a project of a friend of mine into the spotlight:

The Linux-Minidisc project

It’s a project to bring Read/Write access on mini discs to Linux. It consists of a CLI and a Qt Gui. All code is licensed under the GPL and can be accessed via Git.

To get a nice introduction about the project, read this excerpt from a recent Linux Journal edition: http://users.physik.fu-berlin.de/~glaubitz/minidisclj.pdf

The project itself has a wiki under the following address: https://wiki.physik.fu-berlin.de/linux-minidisc/doku.php

As every other FOSS project, Adrian and his fellow developers need more man power. Especially someone who can spruce up the Qt GUI is needed. Help them!