Neuen Rechner aufsetzen

Meine Checkliste:

  • OS + Updates + fehlende Treiber
  • Daten-Partition erstellen
  • Festplattenverschlüsselung TrueCrypt
  • Virenschutz/Firewall
  • Internetprogramme
    • Firefox/Chrome + firebug +laafi amazon extension
    • Skype
    • Thunderbird + Lightning, Google Contacts, Google Kalender, Smiley Fixer, English Dictionary, Deutsches Wörterbuch, Provider for Google Calendar
    • Vuze
    • Cisco VPN client / OpenVPN client
  • Entwicklungsprogramme:
    • Java SDK, maven, Tomcat
    • IntelliJ
    • Sublime
    • putty
    • WinSCP
    • cygwin / PowerShell
  • anderes
    • Adobe PDF Reader
    • Photoshop
    • Open Office
    • VLC
    • WinAmp
    • WinRAR
Advertisements

Android-Handy verloren oder gestohlen?

Mit wurde vor kurzem mein geliebtes Nexus S gestohlen. Anfangs war ich etwas panisch, was dann alles zu erledigen ist, deswegen schreibe ich mir (und euch) eine Checkliste:

  • Google-Passwort ändern!
  • SIM-Karte sperren lassen und neue SIM-Karte organisieren (leider schickt Bob die per Post zu, also paar Werktage warten)
  • Diebstahls- oder Verlustanzeige bei Polizei aufgeben
  • Ersatzhandy mit Ersatznummer besorgen. Freunden/Familie/Firma bekannt geben
  • Neues Handy kaufen! Tipp: bei willhaben.at. Ich hatte mein neues innerhalb von paar Stunden organisiert zu ca. 75% des Listenpreises mit 2 Jahren Garantie

Hilfereiche Apps in diesem Zusammenhang:

  • MyBackupPro: Macht lokal oder online ein Backup der Apps, Daten, Bilder, Einstellungen etc.
  • Lost Droid Finder: eine von vielen Android Finder Apps. Man kann eine SMS an’s Handy schicken und bekommt eines zurück mit der genauen GPS-Position oder man bekommt eine SMS, wenn eine neue SIM Karte eingelegt wurde.

.

Nachtrag:Leider stellt Google Backup und MyBackup Pro nicht alle Daten wieder her. So muss man noch folgendes machen, nachdem man das Backup eingespielt hat:

  • sich bei allen Apps wieder anmelden
  • Sicherheitsmuster wieder einrichten
  • Widgets auf dem Homescreen
  • Custom-Klingelton (mp3 kopieren in /media/audio/ringtones)
  • Sprache&Eingabe: Rechtschreibungsprüfung ausschalten

Java – CertificateException: No name matching xxx found

At paysafecard we have a lot to deal with certificates. For our test systems we use one SSL certificate for different sub-domains, e.g. one certificate for “https://test.yunacard.com” used for “https://testa.yunacard.com” and “https://testb.yunacard.com”.

But when you do this, you get a javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching xxx found when trying to connect e.g. with new java.net.URL(url).openStream();

The work around for this problem is, to include the following in your Java class (found here):

public class ClassBla {
  static {
    javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(new javax.net.ssl.HostnameVerifier() {
      public boolean verify(String hostname, javax.net.ssl.SSLSession sslSession) {
        return true;
      }
   });
  }
  ..
}

There is a way to import a certificate issued to a different domain for another certain (sub-)domain with the java keytool as well.

Java: Rounding error from Double to BigDecimal

Today’s amusement in my job:

Rounding error from Double to BigDecimal, see java docs for public BigDecimal(double val).

Java creates a BigDecimal which is exactly equal to 0.1 (an unscaled value of 1, with a scale of 1), but it is actually equal to 0.1000000000000000055511151231257827021181583404541015625

 

Workaround 1: Convert Double to String before converting to BigDecimal, as suggested in the java docs for BigDecimal

BigDecimal b = new BigDecimal(Double.toString(double));

 

Workaround 2: Round!
Double d = ...; // your (rounded) value
BigDecimal b = new BigDecimal(d).setScale(2, BigDecimal.ROUND_HALF_UP);

.

Another problem with Double in Java: http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/

SQL – Drop constraint without specifying its name

Drop a UNIQUE constraint in relational databases like Oracle without specifying its name by referencing the column or columns:

ALTER TABLE Employee DROP UNIQUE (name)

.

But if you want to drop a NOT NULL constraint  without specifying its name you have to use a workaround, if there is an index on the column:

ALTER TABLE Employee ADD (name_ varchar(32));
update Employee set name_ = name;
ALTER TABLE Employee DROP COLUMN name;
ALTER TABLE Employee ADD (name varchar(32));
update Employee set name = name_;
ALTER TABLE Employee DROP COLUMN name_;

.

To drop a NOT NULL constraint in Oracle you can MODIFY an unindexed column:

ALTER TABLE Employee MODIFY name NULL;

.

ps. Dieses Mal ein How-To-Posting aus meinem spannenden Leben als Software-Entwicklerin in Englisch, zum leichteren Wiederfinden in Suchmaschinen.

Multiple writable mappings in Java Persistence API

Seit kurzem setzte ich mich mit der Java Persistence API auseinander, das mit Hibernate und dem von uns eingesetzten Oracle Toplink implementiert wurde.

Folgende Fehlermeldung beschäftigte mich bei einer OneToMany-Relation

Multiple writable mappings exist for the field [tabltenname.spaltenname]. Only one may be defined as writable, all others must be specified read-only.

Die Lösung war das explizite deklarieren der Spalte als “read only”, was man mit den Optionen nullable=false, insertable=false und updatable=false bei der @Column-Annotation erreicht.

Spannend, nicht? ;)

java-coffee-cup-300x219

oracle update mit inner join

wieder mal ein kleines howto, für etwas, das mir wieder mal auf die schnelle nicht eingefallen ist.

wenn man in einer tabelle A alle spalten a auf einen bestimmten wert setzen möchte, die eine bestimmte bedingung (A.b = B.b) mit einer anderen tabelle B erfüllen, geht das in oracle so:

UPDATE A
set A.a =
(SELECT B.a
FROM B
WHERE A.b = B.b)

in access würde es so gehen:

update A inner join B on
A.b = B.b
SET A.a = B.a

in SQL server so:
UPDATE A
SET A.a = B.a
INNER JOIN B
ON A.b = B.b

siehe z.b. auch sql-tutorial