Special search characters in Firefox

In Firefox, I use the InstantFox add-on to combine address bar and search bar into one item – like in Google Chrome.

But even without this add-on, Firefox allows you to restrict your search by adding a character in front of the search terms, like so:

firefox-search.jpg

Notice the * in front of the search term bugs. This restricts the search to bookmarks.

Here’s a list of the most important restrictions:

Character Restriction
* Bookmarks
^ History
% Open Tabs
+ Tags (in bookmarks)
# Search in titles only
@ Search in URLs only

All these shortcuts can be edited in about:config under browser.urlbar.

Click to play for plugins (Flash, Java) in Firefox

In Google Chrome, there is an option to enable “Click to Play” for plugins, such as Flash, Java, or Silverlight. This makes the browser safer (especially after all the Java security vulnerability in the last time) and a little bit fast. Today, I found out that this option exists in Firefox too – although its a little bit hidden.

To enable “Click to Play” in Firefox…

  1. go to about:config and click on “I’ll be careful, I promise!”
  2. search for plugins.click_to_play and set it to true (by double-clicking the entry)

click_to_play_settings.jpg

After that, when you get to a page that contains Flash (videos), Java, or any other plugin, you’ll get a “Click to Play” message for the plugin.

click_to_play_message.jpg

Plotting graphs with R

I recently stumbled over R, a programming language for data analysis. R is open-source and available on all major platforms (Windows, Linux, Mac).

This post is about how to display (draw) a mathematical function with R.

Side note: There’s a very nice and interactive tutorial for R available over at codeschool.com. It’s free and takes about 3 – 4 hours to complete.

Read more →

Python ist krass

Momentan bin ich “gezwungen”, Software in Python zu schreiben. Und nach einigen Programmierer-Tagen bin ich immer mir noch nicht sicher, ob ich Python mag oder nicht. Einige Sachen sind cool, andere nicht und allzu häufig muss ich feststellen, dass Python ein riesiger Flickenteppich ist. (Allein schon, dass es “alte” und “neue” Klassen gibt – von der Syntax her – und dass diese nicht kompatibel sind, spricht Bände.)

Heute bin ich dafür mal wieder auf ein Konstrukt gestoßen, dass krass und cool zugleich ist:

for i in foo:
  ...
else:
  ...

Es gibt hier also for-Schleifen mit else-Block. Und zwar wird der else-Block ausgeführt, wenn die Schleife komplett durchgelaufen ist (d.h. nicht durch ein break vorzeitig beendet wurde). Ziemlich praktisch.

Referenz

Konsistenz

Konsistenz im weiteren Sinn bezieht sich auf den logischen, hermeneutischen, funktionalen oder ästhetischen Bestand eines Gegenstandes (z. B. eines Textes, eines Begriffs, einer Methode oder Technik, eines Werkzeugs oder eines Kunstwerks), der in sich stimmig ist, Sinn ergibt und keine inneren Widersprüche oder Spannungen aufweist, die seine Einheit gefährden. (Quelle Wikipedia)

Im Bezug auf Software bedeutet das, dass die Software sich an einer Stelle in einer bestimmten Art und Weise und an anderer (ähnlicher) Stelle analog/ähnlich dazu verhält – eben konsistent.

Wie wichtig Konsistenz ist, zeigt mal wieder folgendes Beispiel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
  <head>
    <title>Meine Test-Seite</title>
    <script type="text/javascript" src="js/jquery-1.2.6.pack.js"/>
    <script type="text/javascript">
    <!--
      $(document).ready(function() {
        alert("Hallo Welt");
      });
    // -->
    </script>
  </head>
  <body>
  </body>
</html>

Diese simple HTML-Seite soll per JavaScript/jQuery “Hallo Welt” ausgeben. Dummerweise tut sie das aber nicht trotz ihrer Validität.

Nach stundenlanger Suche bin ich dann auf den Fehler gestoßen. Man darf den <script>-Tag (Zeile 4) nicht als Einzel-Tag schreiben, sondern muss ihn mit schließendem Tag schreiben. Der Quellcode sieht dann also so aus und funktioniert damit:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
  <head>
    <title>Meine Test-Seite</title>
    <script type="text/javascript" src="js/jquery-1.2.6.pack.js"></script>
    <script type="text/javascript">
    <!--
      $(document).ready(function() {
        alert("Hallo Welt");
      });
    // -->
    </script>
  </head>
  <body>
  </body>
</html>

Dieses Verhalten (das im Firefox 3.5 und im Internet Explorer 8, aber nicht im Opera 9 auftritt) ist inkonsistent, denn überall sonst gilt (nur halt bei <script> nicht):

<tag></tag> = <tag/>

Und es ist frustrierend nach so einem Fehler zu suchen, zumal er nirgendwo als Fehler angezeigt wird.