Reihenfolge vertauscht
Es ist immer wieder erschreckend was für Blindgänger doch in den Medien überhaupt noch Gehör finden. Aktuelles Beispiel ist der BDK-Vorsitzende Bernd Carstensen. Er erdreistet sich tatsächlich zu behaupten, dass der Richtervorbehalt im BKA-Gesetz bei Gefahr im Verzug eine Gefährdung der Sicherheit darstellt.
Hier noch mal in der Zusammenfassung, worum es geht: ein Terrorist ist unvermutet online, so dass sein System ausgespäht werden könnte. Jetzt brauchen die Ermittler schnell die Genehmigung gegen ihn mit dem sogenannten Bundestrojaner vorzugehen. Dazu müssen sie aber erst einen Richter auftreiben, der ihnen die entsprechende Erlaubnis erteilt. Bisher war vorgesehen das auch der BKA-Präsident im Eilfall so eine Genehmigung ausstellen dürfte. Warum ist das Blödsinn?
- Der BKA-Präsident ist im Zweifelsfall genauso schnell oder langsam ans Telefon zu bekommen und zu unterrichten wie ein beliebiger Richter, der für solche Fälle ausgeguckt wird. Die Zeit kann also keine Rolle spielen.
- Was kann dann bei einem Richter anders sein? Er könnte gegebenenfalls die Fakten tatsächlich prüfen und die Erlaubnis möglicherweise verweigern, was der BKA-Präsident tendenziell eher nicht tun wird. Sogar unser Bundesinnenminister hat ja schon öffentlich gesagt, dass der BKA-Präsident von der ganzen Materie gar keine Ahnung hat. Diese Klausel ist also nichts als ein Freibrief, bis zum Eingreifen eines Richters erst mal zu tun was immer man für richtig hält.
- Laut bisherigen Aussagen sind die Bundestrojaner Einzelanfertigungen, die genau auf das System und das jeweiligen Opfer zugeschnitten werden. Das dauert seine Zeit, bis dahin wäre der Terrorist sowieso nicht mehr im Netz.
- Ein Terrorist fällt nicht einfach so vom Himmel. Und das er online ist bemerkt man ja auch nicht weil er beim BKA anruft und es ihnen mitteilt, sondern weil man danach sucht ob er online ist. Was heißt das? Man kann ihn hinreichend genau identifizieren das man feststellen kann, das er online ist. Und man ist sich seiner Gefährlichkeit bewusst. Was macht man in solch einem Fall? Sobald man weiß, dass er gefährlich ist und gleichzeitig dumm genug sich online erwischen zu lassen und auf seinem System, mit dem er online geht, irgendwelche tatrelevanten Details speichert geht man zu einem Richter und lässt sich die entsprechende Erlaubnis erteilen. Wann immer der böse Bube jetzt online gesichtet wird hat man bereits sowohl die Verfügung als auch das Schadprogramm fertig und kann sofort losschlagen.
Geändert: 22. 12. 2008, 20:14
Bug des Tages: NULL vs. 0
Unter C++ hat es sich eingebürgert, statt dem in C eigentlich üblichen NULL nur 0 zu schreiben, um einen Pointer zu kennzeichnen, der nirgendwohin zeigt. Dumm ist das man damit auch bei folgenden Flüchtigkeitsfehhlern keine Warnung mehr bekommt, da 0 und NULL als gleich angesehen werden:
T *operator[](const unsigned int &i) { T *res = at(i); if (i == NULL) throw std::out_of_range("bad array index"); return res; }
Gemeint war natürlich:
if (res == NULL)
Geändert: 20. 6. 2011, 08:15
Use the tools, Luke^H^H^H^HJohan
I just read Johan's post about Qt environment variables and wondered if there was a better way to find these. Johan, this is really not meant as any attempt of blaming you for anything. It's just sort of a hobby for me to do things a effective way and you just ran into my sight ;) Really, no pun intended. His original attempt was:
grep getenv -r src/ | grep cpp\: | grep -o "\"[A-Z_0-9]*\"" | sed 's/"//g'
So for those not familiar with the options of those tools: search recursive in "src" directory for everything containing "getenv". As grep then writes "filename:matching line" take only those lines with "cpp:", then cut out the term in quotes and remove them.
Ok, my first idea was: why not simply limit the search to cpp files?
find src -name \*.cpp -print0 | xargs -0 grep getenv | grep -o "\"[A-Z_0-9]*\"" | sed 's/"//g'
The "-print0" makes find limit all matches by a 0 character instead of whitespace so this would also work for file names containing whitespace and other funny characters. Ok, next point: sed is a very powerful tool to do text editing but we really only want to delete a special class of characters. tr steps up for rescue:
find src -name \*.cpp -print0 | xargs -0 grep getenv | grep -o "\"[A-Z_0-9]*\"" | tr -d '"'
Ok, but wouldn't it be better to save a complete invocation of grep? Let's try this:
find src -name \*.cpp -print0 | xargs -0 grep -o 'getenv.*"[A-Z_0-9]*"' | sed 's/[^"]*"//;s/"$//'
Now the whole getenv-and-name things is matched at once and simply everything up to the first quotation marks and a quotation mark at the end of a line is deleted. There are two other things to make your life easier: I used ' instead of " for the grep arguments to get rid of the need to escape " in the grep expression and I also fed two sed commands to sed at once using ; as command delimiter.
If someone now steps up with find -exec: that would call the given program for every file, this way grep would be run many many times. The example above has only 4 program invocations: find, xargs, grep, and sed. That looks enough for now, has someone an even better idea?
So, writing this post took probably 10 times longer than Johan's initial program run so I don't know who is really less efficient today ;) But maybe it will show one or two tricks to someone reading this post.
A, one last idea: we can make the pattern matching in sed a bit simpler:
find src -name \*.cpp -print0 | xargs -0 grep -o 'getenv.*"[A-Z_0-9]*"' | sed 's/"$//;s/.*"//'
Now I remove the " at the end of the line first. After that I know that there is only one " in the line: that at the beginning of the environment variable name. So I simply remove every character up to the ". Before that I needed to check to delete only stuff up to the first quotation mark so I wouldn't delete the whole line.
Geändert: 18. 12. 2008, 23:52
Bug des Tages: strncpy()
Vor ein paar Tagen sind wir über den kreativen Einsatz von strncpy() gefallen, der in Zusammenhang mit der Verschlimmbesserung der C-Funktionen in M$ Visual Studio 2005 zu einer Exception geführt hat. Aber der Reihe nach: strncpy(ziel, quelle, n) kopiert maximal n Zeichen von der Quelle zum Ziel. Der Einsatzzweck ist eigentlich recht klar: man will damit in der Regel verhindern, dass man über das Ende des Ziels hinausschreibt. Gefunden haben wir jedoch das hier:
strncpy(ziel, quelle, strlen(quelle));
Die Quelle war an dieser Stelle ein String der Länge 0 ("", nicht NULL). Aus irgendeinem Grund gefällt es VS2005 gar nicht wenn es nichts zu tun hat an dieser Stelle. Andererseits ist der Aufruf trotzdem Unsinn, denn am Ende des Eingangswertes stoppt strncpy() sowieso. Richtig wäre hier folgendes gewesen:
strncpy(ziel, quelle, sizeof(ziel));
Geändert: 12. 11. 2008, 00:06
How to get rid of a locked screen
Every once in a while it might happen that you can not access your locked KDE screen for one reason or another. I usually install my kdebase as user so the screensaver does not get suid bits and can't authenticate. This way I end up in a situation where my session is running but I can't go in anymore. The solution is rather simple:
killall krunner_lock
About code quality
When you read a text on a wide screen from some point on it becomes less fluent to read it if the text is not broken into columns. Even if it is broken you usually need more space in vertical than you have to avoid scrolling to much. Short story is: that's the way why I have the panel on the (left) side of my desktop on my 1280x800 laptop screen.
Now you have a taskbar showing your apps. The default layout puts the icon left of the text, which is reasonable for horizontal panels. For vertical panels it indeed sucks as you can see on the right. That's the main reason I filed bug 168855.
Well, tonight I felt a bit bored and thought of getting things better. You can see the results (which is just a crude hack) as attachment in that bug, but the point is: I never had done anything in kdebase and it took me only 2 minutes to find the correct directory (I first looked into pager, I always get this wrong) and another 5 minutes to find the right position in the code to change. I only opened two wrong files before finding the right one (one in pager and layoutwidget.cpp). After three tries (one for every line changed in my patch) I got it working good enough. The icon should be aligned to center and all this stuff needs to be configurable or such things, but I do not really care for now. I just wanted a proof of concept to get done, I hope anyone else now picks up that code and makes it really useful.
As you see it behaves much better for my usecase. Maybe it should still break the lines where it did before so that actually more text becomes readable. The cool thing is that even for programs where I already know the code it would probably not have taken very much less time to do such a modification. The code is a awesome shape, logically structured and just wonderful hackable. I like that ;)
Geändert: 9. 11. 2008, 21:08
Upcoming Qt features
<sandsmark> | comawhite: which version of Qt? |
<comawhite> | 4.4.2 |
* | sandsmark has qt 4.4.3, but that should only be copyright changes |
<comawhite> | correct |
<comawhite> | 4.5 will have major changes |
<uga> | will it include a brain to code interface? |
<uga> | that'd rock |
<sandsmark> | uga: that's coming in qt5 |
<comawhite> | lol |
<uga> | shame |
<comawhite> | qt5 lets you create a woman and she'll pop out of the monitor |
<sandsmark> | pfft, today's youngsters, can't wait for anything |
<comawhite> | can't do anything with her since shes GPL ;P gottaaaa share ;) |
<comawhite> | anyways |
<Dakon> | qt5 aka qt4p0rn? |
Geändert: 9. 10. 2008, 23:39
Zeichen und Wunder
Ich weiß nicht, ob sich noch jemand an meine Brandschutztür erinnert. Zwischenzeitlich habe ich einige Male festgestellt das die Tür tatsächlich geschlossen war, das führe ich auf verschiedene Ereignisse zurück. In den letzten Tagen habe ich die Tür selbst nicht benutzt, da ich mit dem Aufzug gefahren bin (zwecks Transport des Fahrrads). Ich meine aber sie wäre auch gestern Abend wieder geschlossen gewesen.
Heute Abend war ich geradezu entzückt als ich feststellen durfte, dass die Tür endlich repariert wurde. Aufgefallen ist mir zunächst gar nicht die Tür selbst, sondern der jetzt ebenfalls in diesem Flurabschnitt montierte Feuerlöscher. Im Gegensatz zu vielen anderen ist dies kein Pulver-, sondern ein 6l-Schaumlöscher. Auch die Tür zur Tiefgarage schließt jetzt wieder und die zweite Tür, die bisher mindestens einmal die Woche aufgekeilt wurde, ist jetzt selbstschließend und als Brandschutztür beschriftet.
Geändert: 24. 9. 2008, 22:09
Planet, again
Since the new PlanetKDE seems to be fully operational I'll step up and try again. Although my feed was still in the config file the old one decided to ignore my recent posts so I'll link them here in case anyone is interested in things i write ;)
A personal note at the end: the new design looks really nice. But I hate websites with a fixed with given in pixels. If I have a wide screen I want to be able to make use of it. But maybe that just brings me to the point to test user stylesheets again ;)
Geändert: 29. 8. 2008, 11:16
Some random ideas about the boothbox
Here is a random compilation of ideas around the boothbox. The same text will be in my blog and sent to kde-promo list (which I am not subscribed to). It is just a list of ideas but if you feel like discussing some things with me feel free to mail me. In the mean time I hope someone will pick up at least some ideas and does the actual work ;P Since I haven't looked into the box since Cebit 2008 some things may already be fixed.
- N810
- It would be extremely nice to get one of those devices for the boothbox with a recent KDE installed (and someone has to take care of updating). At last Cebit it was nice to show KDE4 previews on Linux, MacOS and Windows. Adding a mobile would double the geek and coolness values. Of course some proper theft protection has to be attached to the device.
- Laptop protection
- Many things shown are presented on the private laptops of the booth staff. Although Kensignton locks can be opened with a roll of toilet paper putting some of them (or something similar) into the booth box would be extremely useful. Marking them and the corresponding keys with different colors will add an additional level of handiness. A "master key ring" with a second key for every lock should be in the booth box. The "booth master" must take this keyring out as his first action and put it back as his last. Of course he or she should always carry it around an never leave it somewhere. Attaching a nice blue KDE lanyard on that keyring might help.
- Merchandising
- There should be at least two price lists in the boothbox. One should be fixed in the boothbox so it doesn't get lost and one can be taken to the booth. The amount of things to sell was to few. This likely does not fit into the booth box anyway so that could probably sent in an extra packet with a size that matches the event.
- Staff giveaways
- Getting enough booth staff seems to be complicated. What about a small giveaway for everyone volunteering to help out promoting KDE like a lanyard or a basecap which you get if you are present at least half a day on a booth?
- Posters
- I don't know if it happened already but the posters we had a Cebit were, ehm, they had probably seen better days. There were only a few and rather small (A3) posters of KDE4, the bigger ones were KDE3. The big standup needs to be taped to something like a wall so it would not fall over etc. A set of recent KDE4 posters in different sizes would make things look more professional and easier to set up.
- Tools
This is a random compilation of things I would like to see in the boothbox. You know, something always goes wrong:
- screw driver slotted
- screw driver crosshead
- gaffa tape
- transparent tape (aka Tesafilm)
- some 10 meters of cord
- a bunch of ball pens
- some paper sheets, notepads or something like that
- some name badges for booth staff with blank fields for names so suddenly appearing help can get a badge, too
Of course this needs to be checked after every fair for completeness as I expect the ball pens to silently disappear ;) Everything should also be tagged as KDE's things so e.g. the screw drivers may find there way back to the box.
- Checklists
- Write down instructions. What has to be set up, what to check when putting everything back in, what about donations and sold merchandising ...