Thunderbird 5 und die zusammengefassten Ordner

Thunderbird 5 ist da und bietet so manche Überraschung. Neben moderneren Aussehen, Geschwindigekeitssteigerungen auch zusammengefasste Ordner (deaktivierbar)

Yey! Der neue Thunderburd Mail-Client ist erschienen! Mit Versionsnummer 5 hat man sich dem Schnellschuss-Entwicklungszyklus von Firefox angeglichen. Man kann von der Versionsnummerntreiberei halten was man will, die Änderungen am Programm lassen sich durchaus sehen. Wirkt nun nicht nur die Optik wesentlich moderner, war für mich zuhause der versprochene Geschwindigkeitssteigerung bei Programmstart stark spürbar! Und diverse kleine Tweaks wie die Größenanzeige bei Anhängen sind nicht nur Luxus, sondern ermöglichen wesentlich effizienteres arbeiten.

Gleich auch die im Willkommensgruß empfohlenen 2 Add-ons installiert, der integrierte Kalender und die zu Konversationen zusammengefassten Emails. Dann das erste mal zur Ordner Ansicht gewechselt und er war perfekt! Der erste Schock!

Thunderbird 5 - Gruppierte Ordner
Thunderbird 5 - Gruppierte Ordner

Meine drei IMAP E-Mail konten haben nur noch einen Posteingang! Da bemüht man sich über Monate hinweg Ordnung in sein E-Mail Chaos zu bringen, und jedes Konto nur für seinen auserkorenen Zweck zu nutzen und dann soetwas. Doch der erste Schock war nur von kurzer Dauer, denn Mozilla hat zum Glück nicht einfach nur alle Ordner zusammengeschmissen und diese gar lokal abgelegt, sondern lediglich die Ansicht zusammengefasst. So lässt sich der Posteingang ausklappen um die einzelnen Posteingänge je Konto zugänglich zu machen.

Über Ansicht -> Ordner ->  Alle lässt sich auch die gewohnte Ansicht wieder herstellen und man kann wie gewohnt weiterwerken. Aber vielleicht lassen sich User von neuen Ideen nur auf diese Weise begeistern, denn, zugegeben auch bei mir, mein Forscherdrang was die Funktionen des Mail-Clients betrifft war schon lange versiegt, und wäre die Ansicht nicht so radikal verändert worden, wäre sie mir nie aufgefallen. Und vielleicht gefällt sie mir ja doch … einfach mal eine Zeit damit arbeiten.

Greets

Ähnliche Artikel:

Upgrading MyEclipse – Fehlerhafte Aktivierung

Aktivierungsprobleme beim Upgrade von MyEclipse auf Version 9.0a können an Altlasten der vorherigen Installation liegen. Wie man diese bereinigt liest man hier!

Der Sachverhalt ist schnell erklärt: MyEclipse wurde auf Windows XP von einer veralteten Version auf die neueste Version (aktuell 9.0a) upgedated. Dazu wurde der neueste Installer von der Homepage von MyEclipsehttp://www.myeclipseide.com/ gezogen und die Installationsroutine aufgerufen. Nach Abschluss der Installation fordert MyEclipse den User zur Bekanntgabe der Lizenzdaten (Subscriber und Subscriber Key) auf. Nach bekanntgabe dieser Daten muss MyEclipse noch aktiviert werden. Dazu bietet einem die Software z.B. die Möglichkeit dies automatisch mittels bestehender Verbindung zum Internet. Dafür hat man 5 Tage Zeit.

Leider hatte MyEclipse die erfolgreiche Aktivierung beim nächsten Neustart der Anwendung schon vergessen. Wenn man nicht standardmäßig als Admin User unterwegs ist wie ich, installiert man seine Programme auch nicht mit dem selben User mit dem man sie nutzt. Im Userverzeichnis (C:\Dokumente und Einstellungen\<USERNAME>\ war die .myeclipse.properties, in der die LICENSEE und der LICENSE_KEY vermerkt sind, noch von der vorherigen Installation vorhanden, doch es fand sich kein Aktivierungsschlüssel in dieser Datei. Die Unterschiedlichen Nutzer als Problem geortete war die Suche nach einem entsprechenden Properties-File für den Admin User der nächste logische Schritt. Doch diese konnte nicht gefunden werden. 1 zu 1 zusammengezählt, 10 als Ergebnis erhalten, war nun klar wo der Hase langläuft:

.myeclipse.properties löschen (oder backupen und aus dem Userverzeichnis entfernen)

Von den Altlasten befreit fand fand MyEclipse beim nächsten Start seine bereits durchgeführte Aktivierung. Scheinbar hatte die vorahndene .properties Datei noch Nebenwirkungen auf MyEclipse, das darin nach den Lizenzdaten suchte und natürlich keinen Aktivierungsschlüssel fand.

Happy Coding!

Ähnliche Artikel:

Minecraft Hallenbad – Minecraft Indoor Swimming Pool

See a Youtube video of my latest minecraft building, an indoor swimming pool with zombie-cashier, locker room, bath room, therm, parasols and an awesome slide.

See a Youtube video of my latest minecraft building, an indoor swimming pool with zombie-cashier, locker room, bath room, therm, parasols and an awesome slide.

Complete Build Time about 20 hours, most annoying work – lower a hill to have a big enough plateau to build it.

Enjoy!

Some impressions of it, klick to enlarge.
Minecraft pool outdoorMinecraft pool insideMinecraft pool backside parasols

Ähnliche Artikel:

Dependency Injection: ManagedBean in ManagedBean einfügen

ManagedBeans sind nicht per @Inject einzufügen. Damit nicht jedesmal eine neue Instanz erzeugt wird muss man auf eine andere Annotation zugegriffen werden.

Ein einfaches Beispiel: Wir haben 2 Beans, Managed Beans, in einem verwalten wir den Login des Benutzers, im anderen behandeln wir seine Daten. Im LoginBean des Benutzers wird auch festgehalten ob er aktuell eingeloggt ist, und es soll dazu noch ein Status festgehalten werden. Dieser Status soll jedoch über das Bean dass seine Daten verwaltet gesetzt werden, da hier die notwendigen Berechnungen erfolgen.

LoginController:

  import javax.faces.bean.ManagedBean;
  import javax.faces.bean.SessionScoped;

  @ManagedBean(name = "loginController")
  @SessionScoped
  public class LoginController {
      // Bean Code...
  }

UserDataController:

  @ManagedBean(name = "userDataController")
  @ViewScoped

  public class UserDataController implements Serializable {
    // Bean Code ...
}

Will man auf normale Beans zugreifen, bzw. eine eigene Instanz für jede Injection haben, kann man dies einfach über folgende Annotation erreichen:

    @Inject
     private UserDataBean userDataBean;

Will man jedoch ein ManagedBean erreichen können ist das nicht über die @Inject Annotation möglich. Wie bereits erwähnt würde eine komplett neue Instanz der Bean eingefügt werden und wir können somit nicht auf bereits erarbeitete Daten zugreifen oder für später zusätzliche Daten zur Verfügung stellen.

Hier muss man auf die Annotation @ManagedProperty zurückgreifen:

  @ManagedProperty(value="#{loginController}")
  private LoginController loginController;

  @ManagedProperty("#{loginController.username}")
  private String username;

Mit ihr kann man entweder ein ganzes Bean oder auch nur ein einzelnes Attribut aus einer Bean injecten. Wichtig dabei ist, dass man Getter und Setter nicht vergisst, sowohl im injecteten Bean für das Property, also hier getUsername und setUsername, als auch im Bean das das Property gesetzt bekommt. Die Annotation wird aufgelöst und über entsprechende Getter und Setter werden die Daten ausgelesen UND auch gesetzt.
Vergisst man die ensprechenden Getter und Setter bekommt man eine Fehlermeldung wie diese:

com.sun.faces.mgbean.ManagedBeanCreationException: Verwalteter Bean userDataController kann nicht erstellt werden. Die folgenden Probleme wurden gefunden:
– Eigenschaft loginController für verwalteten Bean „userDataController ist nicht vorhanden.

Ein entsprechender UserDataController sieht dann in etwa so aus:

  @ManagedBean(name = "userDataController")
  @ViewScoped

  public class UserDataController implements Serializable {

    @Inject
    private UserDataBean userDataBean;

    @ManagedProperty(value="#{loginController}")
    private LoginController loginController;

    @ManagedProperty("#{loginController.username}")
    private String username;

      // Bean Code ...

    public void setLoginController(LoginController bean){
      this.loginController = bean;
    }

    public LoginController getLoinController(){
      return this.loginController;
    }

    public void setUsername(String name){
      this.username = name;
    }

    public String getUsername(){
      return this.username;
    }
  }

Alles in allem sehr einfach, wenn man die kleinen Feinheiten mal weiß. Viel Erfolg mit der Dependency Injection!

Ähnliche Artikel:

Kleine Java Tips: Einfach über eine Map iterieren

Ist man von früher gewohnt über das KeySet zu iterieren um alle Elemente einer Map aufzurufen, wird hier ein neuer Weg über das EntrySet und foreach gezeigt.

Hat man eine Map und muss nicht nur mit einem Element sondern mit allen Elementen die die Map beinhaltet weiterarbeiten, ist ein gebräuchlicher Weg über den KeySet der Map zu iterieren

for (Iterator it = map.keySet().iterator(); it.hasNext(); ){
    Object key = it.next();
    Object vlaue = map.get(key);
}

Seit Java 1.5, und damit eigentlich schon recht lange, gibt es jedoch einen bequemeren Weg. Die foreach Schleife in Java funktioniert mit allen Objekten die Iterable implementieren, und somit auch mit dem EntrySet einer Map.

for (Entry e : map.entrySet()){
    e.getKey();
    e.getValue();
}

So bekommt man zu einem viel übersichlicherem Code, der obendrein noch äußerst geschmeidig wirkt :D

Ganz hilfreich ist dabei der im TryCatchFinally Blog veröffentlcihte Artikel, der Zeigt wie man dafür ein schnell zu verwendendes Template in Eclipse anlegt:

http://blubberbart.blogspot.com/2011/04/eclipse-code-template-uber-eine-map.html

Happy Coding!

Ähnliche Artikel: