Schlagwort-Archiv: wordpress

Artikelbild iTunes

[Lösung] iTunes lässt sich nicht installieren (Windows Installer)

Hi,

vor kurzem hatte ein Bekannter folgendes Problem, nämlich, dass sich iTunes nicht installieren ließ. Es kam folgende Fehlermeldung:


Es liegt ein dieses Windows Installer Paket betreffendes Problem vor. Ein für den Abschluss der Installation erforderliches Programm konnte nicht ausgeführt werden. Wenden Sie sich an das Supportpersonal oder den Hersteller des Pakets.

Wenn man’s nicht weiß, ist es schwer die Lösung zu finden. Beheben lässt sich das Problem, indem man in der Systemsteuerung unter “Software” (Windows XP) bzw. “Programme und Funktionen” das Programm “Apple Software Update” deinstalliert. Es reicht auch, wenn man auf “Ändern” und dann im Installer auf “Reparieren” klickt. iTunes lässt sich danach ohne Probleme installieren.
Hoffe das hilft manchen ;-)

Gruß
Marius (Link)

processing

Processing – Fallbedingungen (If-Then-Else) und Zufallszahlen

Hallo,

endlich weißt du was Variablen sind (Behälter, in denen beliebig Werte abgelegt oder herausgenommen werden können), und damit bist du schon ein ganzes Stück weiter. Heute möchte Ich dir zeigen, wie man mit Fallbedingungen arbeitet. Aber .. Was sind Fallbedingungen?

Fallbedingungen

Mit sog. Fallbedingungen kannst du den Programmablauf ändern, das heißt bei bestimmten eintretenden oder nicht eintretenden Ereignissen, passiert dies und das. Beispiel: Wenn die X-Mausposition kleiner oder gleich 100, mache schwarzen Hintergrund, ansonsten mache weißen Hintergrund. So in etwa. Es ist immer dieses Wenn … Dann …
Und wie das ganze Programmiertechnisch aussieht, dazu kommen wir jetzt.
“Wenn” übersetzt ins Englische bedeutet “if”. Da das eine Befehlsanweisung ist, musst du hier wieder Anfang und Ende des Anweisungsblock durch geschweifte Klammern definieren. Wir fragen im Code etwa so ab:

WENN(Dies passiert)
{
//Dann führe diesen Code aus
}

also quasi:

if(Bedingung erfüllt)
{
//Führe diesen Code aus
}

Im letzten Artikel hab’ Ich dir zudem Vergleichsoperatoren gezeigt, wie schon angesprochen, kommen die bei den Fallbedingungen zum Einsatz.
Doch halt, natürlich können wir mit so einem Wenn-Dann nicht nur Zahlen und Rechnungen abfragen. Was so eine Anweisung wirklich erwartet, ist der boolesche Wert true.
Ein boolscher Wert kann genau 2 Zustände annehmen, nämlich true oder false, also Wahr oder Falsch.
Dafürt gibt es den Datentyp boolean(ausgesprochen etwa “buhlien”).
Beispiel: 5 kleiner 7 -> trifft zu, 5 ist in der Tat kleiner als 7, der Vergleich ergibt also true.
So ist es immer und überall, und das nicht nur bei Rechenoperationen, sondern zum Beispiel auch beim Vergleich zweier Texte oder sonst etwas.
Aber sehen wir uns doch jetzt endlich mal den Code an für ein einfaches Beispiel, nämlich das von vorhin.
Ich möchte folgendes: Wenn die X-Position der Maus größer oder gleich der Hälfte der Breite des Fensters entspricht, möchte Ich einen weißen Hintergrund, andernfalls einen schwarzen Hintergrund.
Wo schreiben wir den Code? Hierbei ist eigentilch egal, ob wir ihn in draw() setzen oder ins mouseMoved()-Event, denn draw() wird ständig ausgeführt, mouseMoved() immer dann, sobald(solang) die Maus bewegt wird. Aber schau es dir an:

Sourcecode
void setup()
{
  size(300, 300);
  smooth();
  background(255);
}

void draw()
{
  
}

void mouseMoved()
{
  background(255);
  if(mouseX >= width / 2)
  {
    background(0);
  }
}

Gar nicht schwer, oder? Du siehst, die Hintergrundfarbe wird, egal wo die Maus ist, am Anfang immer auf Weiß gesetzt. Ist die Maus über der Hälfte der Breite des Fensters, wird der Hintergrund nachträglich auf Schwarz gesetzt.
Es ist einfach, du schreibst die Abfrage(if), stellst die Bedingung (in Klammern, bei unserem Beispiel wird abgefragt ob mouseX >= Hälfte der Breite des Fensters) und führst bei true den Code aus.
Ah, da hab’ Ich was für dich, um dir das mit der Bedingung klar zu machen, sieh mal:

Sourcecode
void setup()
{
  size(300, 300);
  smooth();
  background(255);
}

void draw()
{
  
}

void mouseMoved()
{
  background(255);
  if(mouseX >= width / 2)
  {
    background(0);
  }
  println(mouseX >= width / 2);
}

Fällt dir was auf? Schau unten in der IDE im schwarzen Fenster nach ;-)
Du weißt nun, ist eine Bedingung erfüllt, wird Code ausgeführt. Doch was, wenn die Bedingung false ergibt? Dafür gibt es auch was: WENN [...] DANN [...] ANDERNFALLS [...]. Ins englische übersetzt als else.
Wenn Taste Q gedrückt wird, schreibe einen Text, wenn nicht, schreibe anderen Text. Beispiel:

Sourcecode
void setup()
{
  size(300, 300);
  smooth();
  background(255);
}

void draw()
{
  
}

void keyPressed()
{
  background(255);
  fill(0);
  if(key == 'q')
  {
    text("Juhu, Q wurde gedrückt", 100, 100);
  }
  else
  {
    text("Es wurde nicht " + key + " gedrückt", 100, 100);
  }
}

Soweit nicht soo schwer, oder? Und wenn wir nun noch mit Variablen arbeiten, können wir auch schon ein paar tolle Ergebnisse erzielen. Stell dir vor du willst eine einfache Linie zeichnen, die sich vertikal von links nach rechts bewegt. Hat die Linie den Rand erreicht, soll sie wieder bei 0 starten:

Sourcecode
void setup()
{
  size(300, 100);
  smooth();
  background(255);
  //Zu Anfangs den Wert von x setzen
  x = 0;
}

int x;

void draw()
{
  //Hintergrund Weiß
  background(255);
  //Zeichenfarbe Schwarz
  stroke(0, 230);
  //Strichdicke 3Pixel
  strokeWeight(3);
  //Linie (in X-Richtung den Wert vin Variable X)
  line(x, 0, x, height);
  //X um +1 erhöhen
  x++;
  //Wenn x größer oder gleich Breite des Fensters,
  //setze x auf Null
  if(x >= width){x = 0;}
  //Füllen mit Schwarz (Rechteck)
  fill(0);
  //Rechteck zeichnen
  rect(5, 0, 50, 12);
  //Mit weiß füllen (für die Schrift)
  fill(255);
  //Text ausgeben (welchen Wert hat x)
  text("x = " + x, 10, 10);
}

Cool nicht wahr :-)
Und damit nicht genug, denn es ist auch möglich, auf mehrere zu prüfen. Beispiel:
WENN Mausposition X kleiner als 100 UND Mausposition Y kleiner als 100, mache Hintergrund auf Schwarz, ANDERNFALLS mache Hintergrund auf Weiß. Das Beispiel versuchen wir einmal, zuvor aber noch etwas zu …

Logische Operatoren

Logische Operatoren wären UND, ODER und NICHT. Das Zeichen für UND ist hierbei &&. Das Zeichen für ODER ist ||. Um einen Ausdruck oder eine Bedingung zu negieren, setzt du einfach ein Ausrufezeichen (!) davor.
Doch schau dir den Code an:

Sourcecode
void setup()
{
  size(300, 300);
  smooth();
  background(255);
}

void draw()
{
}

void mouseMoved()
{
  //Wenn MausX kleiner oder gleich 100 UND
  //MausY kleiner oder gleich 100, DANN ..
  if (mouseX <= 100 && mouseY <= 100)
  {
    background(0);
    fill(255, 0, 0);
  }
  else
  {
    background(255);
    noFill();
  }
  //Damit man auch sieht, wo 100 und 100 ist,
  //zeiche Ich ein Rechteck:
  stroke(0);
  rect(0, 0, 100, 100);
}

Gar nicht so schwer, stimmt’s? Wollen wir uns zuletzt noch ein Praxisbeispiel ansehen. Danach zeige Ich dir noch Zufallszahlen. Aber nun zum praktischen Beispiel. Nehmen wir eine Ellipse. Wenn Taste “a” gedrückt wird, soll diese horizontal von links nach rechts fliegen, jeweils an den Wänden abprallen und zurückfliegen. Drückst du “+”, bzw. “-” soll so die Geschwindigkeit reguliert werden. Drücke die Taste “0″, um die “Kugel” an den Anfangspunkt zu setzen. Befindet sich die Maus im Bereich der Ellipse, kannst du die Kugel herumziehen, lässt du die Maus los, fliegt sie weiter. Aber schau selbst:

Sourcecode
void setup()
{
  size(300, 300);
  smooth();
  background(255);
  x = 50;
  y = height / 2;
  ballSize = 50;
  speed = 2.0;
  richtungX = 1;
  richtungY = 1;
  lock = false;
  drag = false;
}

//X- und Y-Koordinaten des Balles und die Größes festlegen,
//außerdem die Richtung in die er sich bewegt
int x, y, ballSize, richtungX, richtungY;
//Geschwindigkeit
float speed;
//Variablen um anzugeben, ob der Ball herumgezogen wird
boolean lock, drag;

void draw()
{
  background(255);
  noStroke();
  fill(0);
  //Ellipse wird gezeichnet
  ellipse(x, y, ballSize, ballSize);
  //wenn der Ball nicht gezogen wird, soll er
  //von allein weiterwandern
  if(lock == false){x += speed * richtungX;}
  //Wenn der Ball an der Wand abprallt, richtung ändern
  if(x >= width - ballSize / 2 || x <= ballSize / 2)
  {
    //Einfaches Prinzip wie damals in der Schule, 
    //Zahl mal -1 ändert jeweils das Vorzeichen, also
    //aus Plus wird Minus, aus Minus wird Plus
    richtungX *= -1;
  }
}

void keyPressed()
{
  //Wenn + gedrückt wird, erhöhe speed
  if(key == '+' && speed <= 7.0)
  {
    speed += 0.5;
  }
  if(key == '-' && speed >= 0.5)
  {
    //Wenn - gedrückt wird, verringere speed
    speed -= 0.5;
  }
  if(key == '0')
  {
    //Wenn Null (0) gedrückt wird, setze Ellipse auf
    //Startposition zurück
    x = 27;
    y = height / 2;
  }
}

void mouseDragged()
{
  //Wenn sich Maus innerhalb des Balles befindet, dann...
  if(mouseX <= x + ballSize / 2 && mouseX >= x - ballSize / 2 &&
     mouseY >= y - ballSize / 2 && mouseY <= y + ballSize / 2)
  {
    //.. setze Variable drag auf true.
    drag = true;
  }
  //Wenn drag true ergibt, dann..
  if(drag)
  {
    //..sperre automatische Bewegung der Kugel und..
    lock = true;
    //..setze Werte von x und y auf Mausposition
    y = mouseY;
    x = mouseX;
  }
}

void mouseReleased()
{
  //Wird die Maus losgelassen, ist der verschiebevorgang beendet,
  //und die Kugel fliegt allein weiterhin von links nach rechts, 
  //bzw von rechts nach links, je nachdem.
  lock = false;
  drag = false;
}

Cool oder =D
Eigentlich alles gar nicht soo schwer, gute Mathematikkenntnisse schaden nie, und bei Processing ist das sogar beste Voraussetzung, um bessere Ergebnisse zu erzielen. Bevor Ich diesen Artikel abschließe, möchte Ich dir noch Zufallszahlen zeigen. Zufall übersetzt heißt random. Und damit kannst du Zufallszahlen generieren. Random ist immer vom Datentyp float, also Kommazahl.
Müssen wir Werte übergeben? Aber ja. Insgesamt zwei, nämlich einen Minimalwert und einen exklusiven Maximalwert, zwischen dem eine zufällige Zahl generiert werden soll. Das heißt du möchtest eine zufällige Zahl, diese soll aber auf jeden Fall zwischen 10 und zwanzig liegen? Dann schau her, der schlichte Befehle dafür lautet

random(minimum, maximum);

Und um dazu gleich ein Beispiel zu geben:

Sourcecode
void setup()
{
  size(200, 200);
  smooth();
  background(255);
}

void draw()
{
  
}

void mouseClicked()
{
  float zufall = random(10, 20);
  background(255);
  fill(0);
  textSize(15);
  text(zufall, 100, 100);
}

Du brauchst nichts weiter tun, als mit der Maus zu klicken, es wird dann immer eine neue Zufallszahl generiert und ausgegeben. Wenn die Zahl von Null bis irgendwas generiert werden soll, kannst du dir einen Parameter sparen, dann wird die Zahl immer von Null bis zum Maximum generiert, Höchstwert immer exklusive, das bedeutet der Höchstwert wird nie generiert werden. 20 exklusive bedeutet demnach zwischen 0.000 und 19.999. Ich denke aber, du willst lieber eine gerade Zahl haben, also ohne Kommastellen, nicht wahr? Du “konvertierst” den Wert einfach in int. Ich zeige dir mal was Ich meine:

Sourcecode
void setup()
{
  size(200, 200);
  smooth();
  background(255);
}

void draw()
{
}

void mouseClicked()
{
  int zufall = int(random(10000));
  background(255);
  fill(0);
  textSize(30);
  text(zufall, width / 2 - 25, height / 2);
}

Ich denke das ist soweit klar, wird Zeit dass wir damit auch was anfangen können. Mal folgender Code, dort wird nun jeweils ein Rechteck zufälliger Größe über das andere gezeichnet, an zufälligen Stellen und mit zufälliger Füllfarbe:

Sourcecode
void setup()
{
  size(200, 200);
  smooth();
  background(0);
}

void draw()
{
  noStroke();
  int rndColorR, rndColorG, rndColorB, rndX, rndY;
  rndColorR = int(random(255));
  rndColorG = int(random(255));
  rndColorB = int(random(255));
  rndX = int(random(25, 150));
  rndY = int(random(25, 150));
  stroke(rndColorB, rndColorB, rndColorR);
  fill(rndColorR, rndColorG, rndColorB);
  rect(random(-50, width), random(-50, height), rndX, rndY);
}

Willst du das Bild nun auch noch speichern, gibt es dafür einen wirklich sehr simplen einfachen Befehl. Schreibe nur save und übergib den Namen für das Bild. Sehen wir uns den Code doch einmal an:

Sourcecode
void setup()
{
  size(200, 200);
  smooth();
  background(0);
}

void draw()
{
  noStroke();
  int rndColorR, rndColorG, rndColorB, rndX, rndY;
  rndColorR = int(random(255));
  rndColorG = int(random(255));
  rndColorB = int(random(255));
  rndX = int(random(25, 150));
  rndY = int(random(25, 150));
  stroke(rndColorB, rndColorB, rndColorR);
  fill(rndColorR, rndColorG, rndColorB);
  rect(random(-50, width), random(-50, height), rndX, rndY);
}

int zaehler = 0;
void mousePressed()
{
  noLoop();
  save("Zufall-" + zaehler + ".png");
  zaehler++;
}

void mouseReleased()
{
  loop();
}

Wird die Maus gedrückt, wird die Variable zaehler um 1 erhöht, der Durchlauf(draw()) unterbrochen, das Bild gespeichert. Wird die Maus losgelassen, läuft draw() weiter. Ja, da sind 2 Befehle die du noch nicht kanntest, nämlich noLoop() um die Ausführung von draw() zu unterbrechen, und loop() um die Ausführung fortzusetzen.
Die Bilder werden dann im Verzeichnis, in dem das Projekt liegt, gespeichert.

Folgendes Beispiel zeigt, wie Punkte zufälliger größe und zufälligen Graustufen an zufällige Positionen des Fensters gezeichnet werden. Klickedie rechte Maustaste, um das Fenster zu leeren:

[expand title=">> Code ausklappen<<"]

Sourcecode
void setup()
{
  size(300, 300);
  smooth();
  background(0);
}

void draw()
{
  strokeWeight(random(7));
  stroke(random(255));
  point(random(width), random(height));
}

void mouseClicked()
{
  if(mouseButton == RIGHT){background(0);}
}

[/expand]

Sieht doch für das bisschen Code gar nicht mal schlecht aus, nicht wahr :-)
Wie Ich versprochen habe, brauchst du nicht viel Code, um interessante Effekte zu zaubern, du musst lediglich die gegebenen Befehle an den richtigen Stellen einzusetzen wissen. Ein letztes Beispiel möchte Ich dir noch zeigen:
Es wird von rechts nach links jeweils eine Linie gezeichnet, eine vertikale Linie. Dabei soll sie jeweils eine zufällige Länge(in dem Fall Höhe) haben. Sind die Linien bei kleiner Null angelangt, geht’s von vorne los. Du hast einen weißen Hintergrund und schwarze Linien, damit der Effekt noch besser rüberkommt, zeichne Ich vor der schwarzen immer noch eine weiße Linie, das wird erst beim zweiten Durchlauf sichtbar, aber das siehst du gleich. Schau her, kopier den Code und führe Ihn bei dir aus:

Sourcecode
void setup()
{
  size(300, 300);
  smooth();
  background(255);
  x = width + dicke;
  dicke = 7;
  //frameRate legt fest, wieviele Frames pro sekunde 
  //gezeigt werden. Standardwert ist 60
  frameRate(32);
}

int x, dicke;
void draw()
{
  //Endpunkte von Linien Eckig
  strokeCap(SQUARE);
  //Strichdicke festlegen
  strokeWeight(dicke);
  //Strichfarbe Weiß
  stroke(255);
  //Linie um beim nächsten durchlauf das "übermalen" zu simulieren
  line(x - dicke, 0, x - dicke, height);
  //Strichfarbe Schwarz
  stroke(0);
  //Linie die sich von rechts nach links bewegt, und
  //dabei vertikal eine zufällige Länge hat
  line(x, height - 50, x, height - 50 - int(random(1, height - 60)));
  //Variable x verringern, damit sich die Linien
  //nach links bewegen
  x -= dicke;
  //Wenn die Linie bei kleiner 0 angekommen ist...
  if(x < 0 - dicke * 2)
  {
    //..dann fang von vorne an
    x = width + dicke;
  }
}

Und wenn du anstatt stroke(0); nun stroke(random(255)); schreibst, hast du sogar zufällige Graustufen. Oder gar stroke(random(255), random(255), random(255)); für völlig Bunte Linien :-)
Ändere auch in void setup() einmal den initialwert für die Variable “dicke” um dir das mal anzusehen, spiele auch mit der frameRate herum. Auch sieht es interessant aus, wenn du frameRate auf 60 setzt, stroke weiter auf Null lässt und dicke auf 1 stellst, dann bekommst du so etwas:


Originalgröße

Probiere mit random und den Fallbedingungen ein wenig herum, und schau, was alles möglich ist. Es ist wirklich einfach. Tausche Codezeilen um herauszufinden, welchen Effekte diese Umstellung ergibt. Gestalte es dynamischer oder mach beim Beispiel von eben die länge der Linien abhängig vom Größenunterschied zwischen mouseX und pmouseY, und und und… Alles ist möglich, du kannst nichts kaputtmachen, lerne die gegebenen Befehle an den richtigen Stellen einzusetzen, um noch bessere Animationen und Bilder zu machen..

Für diesen Teil, also was Fallbedingungen (Wenn – Dann – Ansonsten ..) und Zufallszahlen angeht, bin Ich hiermit fertig. Im nächsten Artikel zeige Ich dir noch Schleifen, auch ein interessantes und vor allem wichtiges Thema in der Programmierung. In den nächsten Artikeln zeige Ich dir spezielle Befehle wie dist oder map, außerdem mathematische Funktionen wie PI, pow(), abs(), cos() und so weiter, es bleibt weiterhin spannend und mit jedem Artikel biete Ich dir mehr Wissen und somit mehr Möglichkeiten, mit Processing umzugehen und immer bessere Ergebnisse zu erzielen :-)

Bis dahin viel Spaß beim Lernen und noch einen schönen Tag
Marius

processing

Processing – Variablen, Datentypen, Operatoren

Hi,

jetzt wird’s langsam richtig spannend. In Kürze wirst du phantastische Effekte zustande bringen können. Das können wir nur dadurch erreichen, indem wir das Programm dynamisch gestalten und mit Variablen arbeiten. Variablen – merk dir das gut, denn damit wirst du ab sofort täglich zu tun haben, ein Programm ohne Variablen macht schon fast gar keinen Sinn.

Doch wollen wir uns zuallererst einmal ansehen ..

Was Variablen sind

Wie immer ist für mich schwierig, etwas zu erklären, ohne zu wissen, welchen Kenntnisstand du ungefähr hast, besonders was Programmierung angeht. Variablen, was stellt man sich darunter vor? Variablen -> variabel, also flexibel, veränderbar. Wollen doch mal sehen, wie Wikipedia Variablen erklärt:

In der Programmierung ist eine Variable im allgemeinsten Sinne einfach ein Behälter für Rechnungsgrößen („Werte“), die im Verlauf eines Rechenprozesses auftreten. Im Normalfall wird eine Variable durch einen Namen bezeichnet und hat eine bestimmte Adresse im Speicher des Rechners.

Damit ist eigentlich alles gesagt. Aber was stellt man sich darunter vor? Ich versuche es einmal mit eigenen Worten zu erklären. Stell dir eine Variable als eine leere Hülle vor, oder eine Schachtel. Du kannst die Schachtel nun mit beliebigen Dingen füllen. Du hast beim Start des Programmes keine Schachteln, die musst du dir erstellen. Das bedeutet, du kannst zu Anfangs deine Schachteln oder Kartons bereitstellen und mit Sachen befüllen, du kannst auch während das Programm ausgeführt wird immer wieder Dinge aus der Schachtel nehmen, Dinge hinzufügen oder alles aus der Schachtel herausnehmen. Deine Schachteln sind immer beschriftet, sodass du gleich weißt, wo du was machen / herausnehmen oder hineinlegen sollst.
Am Beispiel von Variablen könnte man das nun so erklären: Du deklarierst eine Variable (deklarieren bedeutet, dass du dir die Variable schon einmal zur Verfügung stellst, ganz gleich, was du nun jetzt oder später noch damit hast, sie muss aber auf jeden Fall da sein). Dieses deklarieren geschieht in etwa so: Du legst fest, welche Art von Werten die Variable aufnehmen kann, und wählst einen Namen für diese Variable. Du kannst immer nur bestimmte Werte in Variablen speichern, so wird dann zwischen den verschiedenen sogenannten “Datentypen” unterschieden. Du kannst die Variable nun deklarieren, und Ihr gleich zu anfangs einen Wert zuweisen, oder auch später, wie du möchtest.

Ich zeige dir das einmal anhand dreier simpler Codezeile:

Sourcecode
  int Zahl;
  Zahl = 4;
  int Zahl2 = 12;

Damit kannst du noch nicht viel anfangen, aber dir wird gleich einiges klar werden, wenn wir das Beispiel von diesem Code anhand einer Grafik deutlich machen:


Lies bitte zuerst diesen Wikipedia Eintrag zu Datentypen durch, besonders der Absatz “Elementare Datentypen” ist interessant.

Wenn du das gelesen hast, können wir hier weitermachen. Ich stelle dir einmal die 3 gebräuchlichsten Datentypen vor, die für den Anfang am öftesten vorkommen werden, nämlich int, float und string. Klingt seltsam, und was bedeutet das?
int steht für Integer, also Ganzzahl. Variablen die mit diesem Datentypen deklariert werden, können Ganzzahlige Werte annehmen. Dann haben wir noch float, um Fließkommazahlen zu speichern, also Kommazahlen eben. Und dann noch String (zu Deutsch “Zeichenfolge”), um Text aufzunehmen.
Die schreibweise ist hierbei relativ leicht, du suchst dir den Datentyp aus, legst einen Namen fest und übergibst einen Wert mit dem Zuweisungsoperator “=”. Bei int und float schreibst du als Wert einfach die Zahl. Bei Strings schreibst du als Wert den Text, eingeschlossen in zwei Anführungszeichen, das ist wichtig. Sehen wir uns noch die Schreibweise an, Ich zeige dir ein Stück Code, welcher relativ einfach zu verstehen ist. Danach gehen wir auf die Operatoren ein, damit wir damit auch ordentlich was machen können :-)

Sourcecode
int Zahl = 12;
float Kommazahl = 5.21;
float Kommazahl2;
String zeichenfolge = "Hallo";
String Zeichenfolge2;

void setup()
{
  size(300, 300);
  Kommazahl2 = 56.074;
  zeichenfolge2 = "Noch ein Text";
  int NeueZahl = 82;
}

Du siehst, es ist ganz einfach. Bevor wir nun gleich zu den Operatoren kommen, nun noch eine Schreibweise, du hast nämlich auch die Möglichkeit, mehrere Variablen getrennt durch Komma in einer Zeile zu deklarieren. Dabei kannst du ihnen aber keinen Wert zuweisen:

Sourcecode
int Zahl, Zahl2, Zahl3;
float Kommazahl1, Kommazahl2;
String text1, text2;

void setup()
{
  size(300, 300);
  Zahl = 3;
  Zahl2 = 99;
  Zahl3 = 32423;
  Kommazahl1 = 43.01;
  Kommazahl2 = 0.002;
  text1 = "Das ist ein Text";
  text2 = "Das ist noch ein Text";
}

Nun zu den ..

Operatoren

Operatoren kennst du, jeder kennt Operatoren. Damit meine Ich speziell Rechenoperatoren. Du kennst Rechenoperatoren schon, es gibt aber auch Vergleichs- oder Zuweisungsoperatoren. Und das kommt jetzt dran. Fangen wir an mit den

Rechenoperatoren

+
Logisch, Plus ist zum addieren da (2 + 5 = 7)
-
Minus zum subtrahieren (abziehen) (7 – 2 = 5)
*
Mal zum multiplizieren (2 * 5 = 10)
/
Teilen, also dividieren (10 / 5 = 2)
% (modulo)
Der Rest einer Division ==> 10 / 5 = 0 (also 10 geteilt durch 5 und 2, Rest 0, bedeutet 5 passt in 10 zwei mal rein, du hast keinen Rest) oder ==> 10 % 4 = 2 (10 geteilt durch 4 = 2 Rest 2, 4 passt in 10 zwei mal rein, du hast einen Rest von 2)

Sollte dir klar sein, brauchen wir nicht weiter ausschmücken, das kennst du. Was auch interessant ist, du kannst mit Klammern arbeiten, genauso wie damals (oder jetzt) in der Schule. Beispiel:

2 + 5 * 2 = 12
(2 + 5) * 2 = 20

Nichts leichter als das, du kannst damit beliebig lange Rechenoperationen durchführen, Ich will es dir anhand eines einfachen Codes einmal zeigen:

  int Ergebnis = ((2 + (2 * 4) * 4) - (12 / 2)) * 4;
  println(Ergebnis);

Ergibt 112. Ich zeig’ das kurz:
2 * 4 = 8
8 * 4 = 32
32 + 2 = 34
12 / 2 = 6
34 – 6 = 28
28 * 4 = 112;

Aber das nur als Beispiel ;-)
Zu weiteren mathematischen Spezialfunktionen kommen wir gleich. Sehen wir uns erst noch Vergleichsoperatoren an.

Vergleichsoperatoren

Vergleichsoperatoren sind, wie der Name schon sagt, zum Vergleich zweier Werte da. Beispiel: Ist 5 gleich 5? Ist 7 größer als 5? Ist 7 größer oder gleich 5? Ist 5 kleiner als 7? Sowas zum Beispiel. Was soll Ich dazu sagen, Ich darf wohl davon ausgehen, dass du das kannst. Hier noch eine Tabelle:

Operator Erklärung Beispiel
== Ist gleich 5 == 7 | trifft nicht zu
> Größer als 5 > 7 | trifft nicht zu
< Kleiner als 5 < 7 | trifft zu
>= Größer oder Gleich 5 >= 7 | trifft nicht zu
<= Kleiner oder Gleich 5 <= 7 | trifft nicht zu
!= Ist NICHT 5 != 7 | trifft zu

Das werden wir noch weiter vertiefen, wenn wir zu den Fallbedingungen kommen, also Wenn-Dann Abfragen. Im nächsten Artikel mehr dazu.

Zuweisungsoperatoren

Zuweisungsoperatoren sind dazu da, um Variablen einen Wert zuzuweisen. Das machst du mit dem “=”-Zeichen, wie du bereits weißt. Beispiel: int Zahl = 12; <== Variable "Zahl" wird der Wert 12 zugewiesen.

Inkrementieren und Dekrementieren
Inkrementierenbedeutet, eine Variable(natürlich nur Zahlen) um genau 1 zu erhöhen.
Beispiel:

  int Zahl =12;
  Zahl = Zahl + 1;
  //Du kannst auch schreiben:
  Zahl += 1;
  //Oder einfach:
  Zahl++;

Welche Schreibweise du wählst, liegt bei dir, aber Zahl++ ist weniger zum schreiben und sieht halt einfach geheimnisvoller aus ;-) Dasselbe funktioniert beim Dekrementieren, natürlich wird dann immer um 1 verringert, schau:

  int Zahl =12;
  Zahl = Zahl - 1;
  //Du kannst auch schreiben:
  Zahl -= 1;
  //Oder einfach:
  Zahl--;

Eigentlich ganz leicht. Das Inkrementieren wirst du die erste Zeit sicherlich verwenden, das kann Ich dir versprechen.
Es gibt auch noch logische Operatoren, diese kommen dann aber erst mit den Fallbedingungen zum Einsatz.

Bevor Ich mit meinem Artikel fertig bin, will Ich dich noch auf etwas hinweisen. Wie du Funktionen Werte gibst, weißt du ja mittlerweile (Beispiel: size(300, 300);). Stell aber sicher, dass du auch den richtigen Datentyp übergibst.
size(300.0, 300.0); wäre zwar dasselbe, würde aber nicht funktionieren, da Funktion “size()” einen Integer-Datentyp erwartet, und keine Fließkommazahl. Warum sage Ich dir das? Das sage Ich dir, weil es eine Möglichkeit gibt, einen Datentyp an einen anderen anzupassen. Klar, du wirst einen String(also Text) nicht in eine Zahl umwandeln können, aber du kannst den Wert eines float-Datentyps in integer wandeln.

size(int(300.0), int(300.0));

würde funktionieren, die Kommastellen werden einfach abgehackt.

Im nächsten Artikel will Ich dir Zufallszahlen und Fallbedingungen zeigen, wenn du das hast, weißt du schon eine Menge, sodass du nach dem nächsten Artikel mit Sicherheit schon schöne Dinge mit Processing anstellen kannst, es wird also spannend :-)

Bis dahin viel Spaß beim Lernen
Marius

[Info] Serverpfade, Design, verlinkte Seiten

Hallo,

Ich hab’ die Struktur meiner Verzeichnisse etwas geordnet. Zu den in meinem Blog verlinkten Ressourcen wie Bilder oder Videos gelangst du nun auch über resources.marius-gerum.de.

Außerdem hab’ Ich ein neues Design(Theme) für meinen Blog aktiviert, es ist aktuell das “iNove 1.4.6 von mg12″.
Desweiteren findest du rechts in der Sidebar meines Blogs Verweise zu Florian Wartners Blog und Michael Bernhards Fußball-Seite “TSV Neusäß Junioren”.

Falls dich noch irgendetwas interessiert, stelle deine Frage in einem Kommentar :)

Grüße
Marius

wordpress

WordPress Teil #6 – Import / Export, Kommentare

Hallo :-)

Heute werd’ Ich dir zeigen, wie du Kommentare verwaltest und ansiehst und wie du deinen kompletten Blog in nur einer Datei exportierst und danach wieder importierst.
Wir fangen mit dem

Export/Import von WordPress
an. Das ist zunächst mal gut zu wissen, was denn ein Export überhaupt ist.
Einen Export gibt es nicht nur für WordPress, sondern auch für andere Programme. Ein Export bedeutet, dass alles vom Benutzer vorgenommenen Einstellungen und Konfigurationen in einer Datei oder einer Projektmappe zusammengefasst werden. Das Programm von dem man die Datei/das Projekt Exportiert, muss ebenso wie das Programm welches diese Daten ggf. wieder empfängt (importiert), muss einen Algorithmus oder eine Regel haben, die exportierten Daten wieder sauber in das bestehende System zu integrieren. Beispiel:

Artikel vom 12.12.2012
Wie man ein Beispiel erstellt

Das ist ein Beispielartikel. Ich hab’ keine Ahnung was hier stehen soll, aber darum geht’s auch nicht ;)

Autor: Marius Gerum

So in etwa (gaanz grob natürlich) sieht ein Artikel aus (ich erkläre das jetzt wirklich sehr einfach, wie Ihr es euch in etwa vorstellen könnt). Würde man diesen Artikel nun exportieren, könnte der in der Export-Datei in etwa so aussehen:

<item>
<title>Wie man ein Beispiel erstellt</title>
<link>http://name.server.tld/?p=219</link>
<pubDate>12.12.2012 21:57:02</pubDate>
<dc:creator>Marius Gerum</dc:creator>
<content>
Das ist ein Beispielartikel. Ich hab’ keine Ahnung was hier stehen soll, aber darum geht’s auch nicht ;)
</content>
</item>

An dieser Stelle kurz nebenbei zum Thema Artikel, du siehst, auch CSS und JavaScript kannst du einbinden, um deine Artikel optisch aufzupeppen und dynamischer zu gestalten :-)

Also, um das noch einmal kurz zusammenzufassen, eine Export-Datei ist im Grunde eine Datei in der zusätzlich zum Text auch die Einstellungen des Benutzers abgelegt sind. Beim Import wird diese Datei gelesen und entsprechend sauber wieder in ein neues/bestehendes System integriert. In WordPress findest du Export-Dateien in Form von .xml-Dateien.

Exportiere deinen Blog also nun einmal. Dafür navigiere im Dashboard auf der linken Seite zu “Werkzeugs” und klicke bei dem schwarzen Pfeil auf “Daten exportieren”. Du siehst, du könntest nun Alles exportieren, oder einfach nur die Artikel oder die Seiten. Wenn Ich exportiere, mache Ich immer alles. Klicke also gleich darauf auf den Button “Export Datei herunterladen”. Ist die Datei fertig heruntergeladen, öffne Sie in einem Editor. Du siehst darin einiges an XML-Tags, aus denen WordPress dieDaten später beim import wieder einliest. Optimal wäre es natürlich,wenn du schon ein oder mehrere Artikel geschrieben hättest, dann könntest du jetzt sehen, wie und wo diese abgespeichert sind. Meine export-Datei enthält z.B. zum Zeitpunkt dieses Artikels ca. 1,6Millionen Zeichen und 20.000 Zeilen.
Du kannst dich da wenn du magst ein wenig umsehen, dort wirst du über die Kategorien, die Seiten und deine Schlagwörter stolpern, es ist alles da. Wir wollen uns jedoch auch nicht damit aufhalten, jetzt diese Datei zu studieren, das wesentliche ist deutlich geworden: Es sind alle Einstellungen da und nichts fehlt.

Am besten du änderst hier und dort vielleicht ein Wort oder fügst irgendwo in einem Artikel (also in der Datei) ein Smiley hinzu, damit du später siehst, dass das auch übernommen wird. Wollen wir uns also nun gleich daran machen, diese Datei wieder zu importieren.


Wichtig: Du musst davor in deiner Datenbank alle Datensätze aus den Tabellen `wp-posts` und `wp-comments` löschen. Also nicht die Tabellen selbst ;-)

Dafür klicke im Dashboard unter “Werkzeuge” einfach auf “Daten importieren”. Wähle die exportierte .xml-Datei aus und lade Sie danach hoch.

Das war’s im großen und ganzen mit dem Import und Export. ABER nicht vergessen, vor einem Import noch die entsprechenden Datensätze aus den Tabellen zu löschen ;-)

Die Kommentare
Du findest im Dashboard auf der linken Seite einen eigenen Menüpunkt “Kommentare”. Klicke darauf, und du komsmt auf die Seite, auf der Kommentare angezeigt werden.
Du siehst oben in der Spaltenbeschreibung den Autor, den Kommentar und für welchen deiner Artikel der Kommentar war:


Größer ansehen

Du siehst zusätzlich zum vom Kommentator angegebenen Namen auch noch dessen Email-Adresse(falls angegeben), seine Homepage(wenn er denn eine hat) und die IP. Auch beim Kommentar selbst siehst du oben, wann dieser geschrieben wurde. Zudem hast du die Möglichkeit, einen Kommentar zu ändern:


Größer ansehen

Du kannst dort einen Kommentar Genehmigen. Standardgemäß wird ein geschriebener Kommentar nicht sofort angezeigt, du musst das erst zulassen. Wenn er bereits genehmigt wurde (wie hier im Bild), kannst du den Kommentar jederzeit auch wieder zurückweisen. Du könntest auch direkt auf den Kommentar antworten, Ihn im Quick-Edit oder vollen Bearbeitungsmodus abändern, ihn als Spam markieren oder direkt in den Papierkorb werfen.
Wurde ein Kommentar von dir genehmigt, kann Ihn auch jeder andere direkt auf deinem Blog sehen.

Soweit zum Ex- und Import und den Kommentaren. Eigentlich wäre Ich nun auch insgesamt mit dieser Tutorial-Reihe fertig.
Wenn du jedoch -bezüglich dieserWordPress-Reihe- noch einen Wunsch hast oder willst, dass Ich zu einem bestimmten Thema noch ein extra Tutorial schreibe, lass es mich wissen, entweder durch einen Kommentar oder kontaktiere mich einfach über das Kontaktformular :-)

Bis dahin viele Grüße
Marius

wordpress

WordPress Teil #5 – Themes und Plugins

Themes
Du hast in WordPress auch die Möglichkeit, andere Themes zu installieren. Mit jedem Thema hast du ein anderes Design, die Menüleiste oder die Sidebar verschieben sich auch an andere Stellen (teilweise). Bei der Auswahl eines Themes ist allerdings darauf zu achten, welche Konfigurationsmöglichkeiten du hast. Manche Themes ändern einfach nur das Design, andere wiederum kannst du bis in den letzten Winkel selbst einstellen und konfigurieren, einige bringen sogar eigene 404-Seiten mit. Bei dem derzeit aktuellen Theme von mir habe Ich beispielsweise alle Möglichkeiten(es ist das “Suffusion 3.7.8 von Sayontan Sinha” Theme), dieses optimal und bis in’s letzte Detail selbst einzurichten.

Um Themes zu installieren, musst du erst einmal wissen, welche es so gibt.
Navigiere im Dashboard auf der linken Seite zu “Design”->”Themes”.
Du landest im “Themes verwalten” Menü. Dort sind die Themes gelistet, die du bereits installiert hast. Von allen installierten Themes, egal wieviele es sind, kannst du jeweils eines aktivieren. Je nachdem welche Einstellungemöglichkeiten du für ein Theme hast, taucht im “Design”-Menü links wo du gerade geklickt hast noch der Name des aktivierten Themes auf. Wenn du darauf klickst, kommst du zu den jeweiligen Einstellungen des Theme’s. Aber das nur nebenbei. Du befindest dich also in “Themes verwalten”. Um weitere Themes zu suchen, klicke oben auf “Themes installieren”, um dir anzeigen zu lassen, welche es noch gibt.

Du landest im Bildschirm, um Themes zu suchen. Hierzu gleich einmal eine Grafik:


Größer ansehen

Unten lässt sich die Suche dann noch verfeinern und genauer einstellen. Klicke dann unten links auf “Themes suchen”. Du kannst aber auch nichts spezielles eingeben und suchen, so werden dann alle Themes angezeigt. Wenn du das hast, werden alle dem Suchmuster entsprechenden Themes aufgelistet (30 pro Seite). Du siehst jeweils ein Bild dazu, außerdem kannst du das Theme direkt installieren, dir Details darüber geben lassen oder einfach nur eine Vorschau ansehen.
Sieh’ dir einige an und entscheide dich für eines (du kannst auch das lassen, das bereits eingestellt ist, aber damit du weißt wie das funktioniert, zeige Ich das. Ich lade Testweise nun das Theme “SimpleDark 1.2.11″ runter. Dafür klicke Ich auf “Installieren”.

Im nächsten Bildschirm wirst du nach dem Host und den Zugangsdaten gefragt:


Größer ansehen

Gib’ also die korrekten Zugangsdaten ein, damit das Theme auf deinen Server geladen und dann dort entpackt werden kann. Klick dann auf Fortfahren und los geht’s, du kommst hier hin:


Größer ansehen

Ich will dir nichts vormachen, meist funktioniert es nicht so wie gewünscht. Das wird dann durch entpsrechende Fehlerausgabe zitiert. Ist das der Fall, kopiere den Pfad von dem aus die .zip runtergeladen wird (also wie im Bild zu sehen, das was neben “Runterladen des Installationspakets” steht), füge Ihn im Browser ein und lade es manuell runter. Entpacke dann den Ordner und öffne das Verzeichnis. und das Verzeichnis darin schiebst du dann über FileZilla auf deinen Server zu dem Pfad, in dem die Themes liegen, also “/wp-content-themes”. Dort sollte das Standard Theme bereits liegen, also ein Ordner namens “twentyten”. Danach gehe wieder in’s Dashboard.

Egal ob es nun automatisch geklappt hat oder du das manuell einrichten musstest, hier geht’s jetzt weiter :-)
Klick dich wieder zu den Themes durch, bleib aber im Reiter “Themes verwalten”. Dort siehst du nun unten das installierte Theme. Um dieses Theme auf den Blog anzuwenden, klicke einfach auf “Aktivieren”. Und .. Fertig! ;-) Das Theme ist nun aktiv. Ich hab’ das “SimpleDark 1.2.11 von Justice” Theme installiert, für dieses Beispiel. Wenn nach dem klick auf Aktivieren alles gut gegangen ist, sollte das oben mit entsprechender Erfolgsmeldung quittiert werden:

“Ein neues Theme wurde aktiviert. Dieses Theme unterstützt Widgets. Nutze die Widgets Seite um sie zu konfigurieren.”

Hieraus ist auch ersichtlich, dass dieses Theme sogar extra Einstellungen für Widgets bereithält. Desweiteren findest du unter dem “Design”-Menüpunkt nun einen weiteren Punkt “SimpleDark Options”. Dort konfigurierst du dein Theme dann.
Jenachdem welches Theme du gewählt hast, sind diese Einstellungen eben da oder nicht.

Plugins
Mit den Plugins verhält es sich exakt so wie auch bei den Themes. Wenn du links auf “Plugins” klickst, bekomsmt du eine Liste der von dir installierten oder bereits Standardgemäß vorhandenen Plugins. Auch hier wieder, klickst du oben auf “Installieren”, kannst du Plugins suchen. Diese werden dir dann auch ausgegeben und du kannst diese dann installieren. Wenn auch das nicht klappt, kannst du auch dort wieder einfach die URL zum .zip-gepackten Ordner kopieren und das Teil manuell runterladen. Schiebe dieses dann ggf. auf deinen Server in den Pfad “/wp-content/plugins”.
Ist ein Plugin installiert, kannst du es jederzeit aktivieren oder eben deaktivieren. Ich hab’ zZ. beisp. das “Cumulus” Plugin für die schöne Schlagwörter Kugel, die du rechts in der Sidebar sehen kannst. Du darfst so viele Plugins runterladen wie du möchtest, aber du musst eben darauf achten, dass diese dann auch mit deiner WordPress-Version kompatibel sind.

Das war’s schonmal zum Thema Plugins und Themes. Im nächsten Teil sehen wir uns die Import und Export Funktion, und Ich zeige dir, wie du das mit den Kommentaren händelst :-)

Bis dahin viel Spaß beim Lesen
Marius

wordpress

WordPress Teil #4 – Seiten erstellen

Hi,

heute lernst du Seiten kennen, was es damit auf sich hat, wie du diese erstellst und warum das nicht dasselbe wie Artikel sind.

Wo du die Seiten findest, wirst du schon gesehen haben, nämlich auf der linken Seite im Dashboard unter “Seiten”.
Meist hat WordPress da schon eine Beispielseite angelegt, die kannst du löschen.

Doch bevor wir jetzt eine Seite erstellen, ist es wichtig zu wissen …

Was Seiten sind
Seiten dienen zum anzeigen statischer Informationen. Und genau das ist der große Unterschied zu einem Artikel. Ein Artikel ist dynamisch gehalten, dort schreibst du meist aktuelles, Dinge die sich ändern können. Bei Seiten ist das anders, diese sind eben statisch. Das heißt die erstellte Seite bleibt wo Sie ist, und meist wird daran auch nicht mehr herumgefummelt, wenn sie fertig ist. Beispielsweise das Impressum, das wirst du immer dort haben, wo man nicht suchen musst, das sieht man rechts oder oben in der Menüleiste, und das ist da. Einen Artikel wirst du suchen müssen, da er ja mit jedem weiteren Artikel immer weiter unten landet. Oft findest du in Blogs auch eine Seite “Über mich”. In einem Artikel würde das keinen Sinn machen, denn was sollte sich daran schon groß ändern. Man ist wie man ist, und wenn das auf einer Seite steht, reicht das.

Eine Seite ist eben einfach nur ein großer Textbereich, in dem du wichtige Informationen, Impressum oder ein Kontaktformular reinstellen kannst. Das praktische ist eben, dass diese Seiten von überall aus erreichbar sind, nämlich immer oben in der Menüleiste oder in der Sidebar.

Eine Seite erstellen
Tja, dazu gibt’s nicht viel zu sagen, im Endeffekt gehst du dabei genauso wie für einen Artikel vor, also “Seiten”->”Erstellen”->Schreiben->”Publizieren”. Und danach schaust du dir das Ergebnis auf deinem Blog an und nimmst ggf. noch einige Änderungen vor.

… Ja, womit wir auch hier wieder mal am Ende wären. Im nächsten Teil kommen dann die Themes, danach die Plugins :-)

Grüße
Marius