Java: Countdown und Timer (am Beispiel von Swing)

Posted: Dezember 21st, 2012 | Filed under: Java, Programmieren | Tags: , , , , , , | 12 Comments »

Häufig benötigt man für Applikationen einen Zeitnehmer, oder es soll ein bestimmtes Event nach einer gewissen Zeit ausgeführt werden. Mit Hilfe der Klasse Timer aus der Swing-Bibliothek kann ein sogenannter Countdown leicht erstellt werden. Das folgende Beispiel veranschaulicht die Realisierung eines Countdowns.

Screenshot

image

Quellcode

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.Timer;
import javax.swing.WindowConstants;


public class Countdown extends JFrame {
 
  // Countdown mit 42 Sekunden
  public static int counterValue = 42;
  public static Timer timer;
  public static JLabel label;
 
  public Countdown() {
    initGUI();
  }
 
  // GUI-Erzeugen
  private void initGUI(){
    BorderLayout thisLayout = new BorderLayout();
    this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    this.getContentPane().setLayout(thisLayout);
    label = new JLabel();
    label.setText(String.valueOf(counterValue));
    this.getContentPane().add(label, BorderLayout.CENTER);
    this.setTitle("Countdown Example");
      this.pack();
      this.setVisible(true);
  }
 

  public static void main(String[] args) {
    // GUI erzeugen
    Countdown countdown = new Countdown();
   
    // Timer erzeugen, jede 1000 Millisekunden (= 1 Sekunde)
    // Methode actionPerformed aufrufen.
    Countdown.timer = new Timer(1000, new ActionListener() {
     
      public void actionPerformed(ActionEvent e) {
        // 1 Sekunde abziehen
        Countdown.counterValue--;
       
        // Zahl in Label darstellen
        Countdown.label.setText(String.valueOf(counterValue));
       
        // Falls Zähler = 0, Countdown abgelaufen!
        if(Countdown.counterValue == 0){
          System.out.println("Counterdown ausgelaufen!");
         
          // Timer stoppen
          Countdown.timer.stop();
        }
      }
    });
       
    // Timer starten
    timer.start();
  }
}

In der Klasse Timer kann im Konstruktor ein Zeitwert und ein Listener übergeben werden. Die actionPerformed-Methode dieses Listeners wird, nachdem der Timer gestartet wurde, alle 1000 ms (=1 s), aufgerufen. Die Methode actionPerfomed ist also unser Taktgeber beim Abziehen einer Sekunde von der aktuellen Countdown-Zahl. Erreicht unsere Zahl den Wert 0, ist der Countdown schließlich abgelaufen.


Sicherheitslücken in Webapplikationen – Seminararbeit

Posted: Dezember 18th, 2012 | Filed under: Programmieren, Sicherheit, Tutorials | Tags: , , , , , , , , , , , , , , , | 3 Comments »

Abstract

Da webseitenbasierte Applikationen immer mehr an Bedeutung gewinnen, stellt sich die Frage nach der Vertraulichkeit, mit der unsere im World Wide Web gespeicherten Daten behandelt werden. Sicherheitslücken und erfolgreiche Angriffe auf Webapplikationen schaden oft nicht nur dem Betreiber des jeweiligen Dienstes, sondern auch dem Endverbraucher, der seine privaten Daten wie beispielsweise Konto- oder Kreditkartennummer, E-Mail-Adresse oder Passwörter an den Angreifer unfreiwillig abgibt.

In dieser Arbeit werden häufige Sicherheitslücken in PHP-basierten Webanwendungen erklärt und anhand eines praktischen Beispiels verständlich gemacht. Um einen Überblick über eingesetzte Websprachen zu geben wird zu Beginn der Arbeit auf die Verbreitung verschiedener Sprachen eingegangen. Resultierend aus dem hohen Marktanteil werden Sicherheitslücken und Angriffsmechanismen wie Remote Command Execution, SQL-Injections, XSS-Attacken, Cross-Site Request Forgery und HTTP Response Splitting am Beispiel von PHP vorgestellt. In einem zweiten Teil der Arbeit wird beschrieben, wie man Passwörter mit Hilfe von sogenannten gesalzenen Hashes in einer Datenbank sicher schützen kann. Zum Abschluss wird das PHP-Framework CodeIgniter und seine Schutzmechanismen vor Angriffen auf Applikationsebene vorgestellt. Sicherheitsprobleme auf Netzwerk- und Betriebsystemebene werden in dieser Arbeit aufgrund des begrenzten Umfanges nicht angesprochen.

Inhaltsverzeichnis

  • Abstract
  • Einleitung
  • Angriffsmechanismen
    • Remote Command Execution
    • XSS – Cross-Site-Scripting
    • SQL-Injections
    • Datei-Upload
    • Cross-Site Request Forgery
    • HTTP Response Splitting
  • Passwörter in Datenbank schützen
    • Einwegverschlüsselung
    • Hashwerte salzen
  • Einsatz von Frameworks
    • CodeIgniter
      • Schutzmechanismus: URL-Sicherheit
      • Schutzmechanismus: Error-Reporting
      • Schutzmechanismus: Hochkommas escapen
      • Schutzmechanismus: XSS-Filter
      • Schutzmechanismus: SQL-Injection
      • Schutzmechanismus: Form-Validation
      • Schutzmechanismus: CSRF-Protection

Download

Herunterladen könnt ihr euch meine Seminararbeit unter Folgendem Link:

http://blog.mynotiz.de/downloads/sicherheitsluecken_in_webapplikationen_frank_roth.pdf (PDF)

Screenshots

Screenshots vom Inhaltsverzeichnis und dem Abstract.

imageimageimageimage


Ordner kopieren – Dateien mit bestimmter Dateiendung ignorieren

Posted: Dezember 17th, 2012 | Filed under: Tutorials | Tags: , , , , , | 1 Comment »

Da ich bei meiner EOS 60D meine Bilder sowohl im RAW- als auch im JPEG-Format im gleichen Ordner abspeichere, hatte ich häufig Probleme beim Kopieren der JPEG-Bilder auf ein externes Medium. Mit Hilfe des Konsolen-Befehls xcopy könnt ihr komplette Ordner-Strukturen rekursiv kopieren und zusätzlich dazu Dateiendungen, wie beispielsweise .mpg, .avi oder .cr2 (Canon RAW-Format), beim Kopiervorgang ausschließen. Die Dateiendungen die ihr nicht kopieren wollt einfach in einer Textdatei zeilenweise, hintereinander angeben.

image

Nach dem Erstellen der Textdatei speichert ihr diese am Besten unter C:\ ab.

xcopy “C:\Quellordner” “C:\Zielordner” /S/E /EXCLUDE:C:\exclude.txt

Anschließend könnt ihr obigen Befehl in der Windows-Konsole eingeben.

image

Das Programm xcopy ist standardmäßig auf allen Windows-Plattformen installiert.