Posts for 2011 February
I thought we had deprecated regedit
Post by Nico Brailovsky @ 2011-02-22 | Permalink | 2 comments | Leave a comment
Guys, I thought we had already agreed on this a long time ago. Windows registry sucks. It's a pain in the ass.
Why TF is regedit still used in Gnome? I'd switch to KDE, if only I wasn't so lazy.
Using BoUML as a case tool
Post by Nico Brailovsky @ 2011-02-17 | Permalink | Leave a comment
I don't really fancy CASE tools a lot, they are mostly fads, but I must admit it, using BoUML to work on a design the other day was a nice surprise. Not only the generated code didn't seem to be written by an trained monkey [1], it almost seemed to be usable with some tweaking. It even generated nice javadocs!
For this article I'll asume you have some experience with BoUML. If you don't, apt-get it (it's available for Linux and Windows) then come back later, I'll wait. BoUML's manual is quite good and includes a lot of screenshots, but if you're already experienced using it you may find this short checklist quicker to create a new project and use the code generation tools:
- Languages > C++ [...]; this will tell BoUML what language should generate. I haven't tried other than C++ but I've heard they work fine.
- Draw some nice UML to create a couple of classes (i.e. create a class view and a class diagram, then add some classes). Don't forget to add some relationships, so the generated code can be something more than "class Foobar{};"
- Create a deployment view. Something like "Foobar_deploy"
- Edit the class view, it should open a class view dialog. Select your new deployment view
- Right click on each class and click "Create source artifact". This'll create a new artifact under your deployment view
- Almost done. In project > Edit > Edit Generation Settings go to "Directory" tab and select a root directory
- You're now ready to right click on your class view and select "Generate > C++". Congratulations.
Generating namespaces in C++ wasn't easy at first, and the manual may not be so clear about this one: * Create a package. Move everything there (your deployment view, class view, etc). * Edit the package. Under C++ complete each path and namespace name (?). For example, Foo, Foo Foo would generate your sources and headers under ./Foo, with namespace Foo. * Repeat for as many namespaces as you want. You can have nested namespaces but you'll have to specify the full path and namespace name, i.e. Foo/Bar, Foo/Bar_CPP, Foo::Bar
If you're going to use BoUML as a case tool, you'll want to name associations, use the multiplicity, create setters and getters and all the stuff you probably never did when documenting in UML to reach a minimum user-documentation wheight. It seems these CASE tools haven't developed telepathy yet. Too bad.
Source: $ man BoUML [1] Regardless of the fact that some may say that about my own code.
Vim Tip: Vigor
Post by Nico Brailovsky @ 2011-02-15 | Permalink | Leave a comment
Oh man. Just do a search on google images for Vim + Vigor. There are so many WTF images to choose from, I just can't decide. Apparently since Vim is the name of sexual enhancement drug or something like that, combining Vim and Vigor is a formula for fun.
Well, Vim and Vigor have a different meaning in Linux. Just do an apt-get install vigor, then run it. You'll have lots of fun with Vim's evil cousing, I promise.
BoUML: A usable UML editor for Linux
Post by Nico Brailovsky @ 2011-02-10 | Permalink | Leave a comment
I bet you've heard it before, some people actually document their projects. Crazy, I know. UML is the tool of choice this days, and a lot of bad applications exist to make your life misserable with half implementations of a half standard language, and random crashes sprinkled here and there to keep you alert and saving at all times (I'm looking at you, Umbrello).
In Linux finding a decent UML application has been quite a difficult task, but after working with BoUML for quite some time I can say this tool, although not without its quircks, certainly meets my acceptance criteria [1].
BoUML, though a little bit unintuitive at first, is quite easy to use. Unlike most UML applications, this one workes closer to a CASE tool, so everything will have to be organized in packages. As a quickstart, create a class view and a class diagram inside that one, but you should really check the official manual. It'll save you a lot of grief, trust me.
On the downside, BoUML is not quite so good for free-style UML, so making a collaboration diagram with network symbols is impossible. I can live with that, Dia is a nice complement for free-style diagrams (it does work... though the result is uglier than an the dog at the end of this post).
[1] WTF after so many years of really bad applications my "acceptance criteria" has fallen so low that "stable" almost equals "good"...