Was ist Arch Linux?

Bei Arch Linux handelt es sich um eine flexible und leichtgewichtige GNU/Linux-Distribution für erfahrene Anwender. Die Besonderheit ist, dass nach der Installation lediglich ein Grundsystem vorliegt, welches optimal nach den Bedürfnissen des Nutzers gestaltet werden kann.

Außerdem handelt es sich um ein sogenanntes Rolling-Release-System, das heißt, dass es keinerlei Betriebssystem-Versionen gibt, bei welchen eine große Menge an Software auf einmal aktualisiert und neue Funktionalität eingebaut wird. Stattdessen werden die einzelnen Pakete kontinuierlich aktualisiert, sodass das System brandaktuell ist. Neuinstallationen sind nie erforderlich.

Ist es ein Betriebssystem?

Ja, es ist ein GNU/Linux-Betriebssystem. Es wird also der Linux-Kernel verwendet und eine große Menge an GNU-Tools eingesetzt. Das System ist unixähnlich.

Was ist daran besser?

Im Vergleich wozu? Zu Windows habe ich bereits hier und hier einen sehr ausführlichen Vergleich vorgenommen. Einen ausführlichen Vergleich zu anderen Distributionen findest du hier.

Was macht Arch aus?

  • Anpassbarkeit: Arch lässt sich extrem stark an deine eigenen Bedürfnisse anpassen. Das System enthält nur das, was du wirklich brauchst und keinen redundanten Schnickschnack. Du nimmst das System nicht einfach so hin wie es ist, sondern du gestaltest es aktiv nach deinen Wünschen. Deshalb sieht ein Arch-System bei jedem Nutzer wahrscheinlich vollkommen anders aus. Der Nachteil ist natürlich, dass zu Beginn nicht alles fertig und direkt nutzbar ist, sondern du erst einmal vieles einrichten musst, bevor du anfangen kannst.
  • Software: Es gibt sehr viele Software-Pakete für Arch. Arch bietet zusätzlich zum Paketmanager pacman das sogenannte AUR an, welches von Nutzern gepflegt wird. Für Debian/Ubuntu soll es zwar insgesamt mehr Pakete geben, jedoch habe ich genau die gegenteilige Erfahrung gemacht ;-)
  • Software direkt vom Entwickler: Während andere Distributionen beispielsweise Desktop-Oberflächen leicht modifizieren, bekommst du bei Arch direkt das Produkt, welches der Entwickler herausgegeben hat.
  • Aktualität: Arch ist durch das Rolling-Release-Modell immer sehr aktuell und Arch-User erhalten so oftmals als erste die neuesten Versionen von Programmen und somit den Zugang zu neuen Features. Dies hat jedoch zur Folge, dass die Updates nicht immer ganz glatt laufen und danach möglicherweise bestimmte Funktionalitäten beeinträchtigt werden. Du musst damit rechnen, hin und wieder mal Hand anlegen zu müssen, um Fehler zu beseitigen. Daher solltest du dich gut mit der Arbeit mit Log-Dateien auskennen, um die Probleme auch selbstständig lösen zu können.
  • Arch-Wiki: Das Arch-Wiki ist das beste Linux-Wiki, welches mir bekannt ist.
Ist es kompliziert?

Es ist kompliziert, wenn man bislang zu wenig GNU/Linux-Erfahrung besitzt. Arch richtet sich wirklich nur an erfahrene Anwender, weil du damit rechnen musst, dass du dir nicht alle Einstellungen zusammenklicken kannst, sondern auch sehr viel mit der CLI arbeiten musst. Daher musst du die grundlegenden Befehle beherrschen und zudem ein gutes Wissen über einzelne Hintergründe besitzen.

Für Einsteiger ist dagegen das auf Arch basierende System Manjaro sehr empfehlenswert. Damit bekommst du natürlich bei weitem nicht alle Vorteile von Arch zu spüren – Manjaro betont stets, dass es nicht Arch ist –, jedoch ist es ebenfalls ein ganz gutes System für Einsteiger, siehe auch: https://wiki.manjaro.org/index.php?title=Manjaro:_A_Different_Kind_of_Beast

Geht es auch gut auf dem Laptop?

Natürlich! Es spielt keine Rolle, ob PC oder Laptop: Solange die notwendigen Treiber für die Hardware vorhanden sind, sollte alles problemlos funktionieren.

...zur Antwort

Wieso nimmst du nicht dort Kontakt zum Entwickler auf? Wir können da leider kaum helfen. Hast du es schon mit einer alternativen Kamera-App wie Open Camera probiert? Oder funktioniert das auch nicht?

...zur Antwort
aber wie bekomme ich nun die Inhalte vom übergebenen Array an das Vector-Objekt?

Iteriere mithilfe einer for-Schleife durch das Array und füge alle Objekte dem Vector über die add-Methode hinzu:

public static Vector speichern(Object[] array) {
  Vector<Object> v = new Vector<>();
  for (Object o : array) {
    v.add(o);
  }

  return v;
}

Obige for-Schleife ist übrigens eine praktische Abkürzung zu Folgendem:

for (int i = 0; i < array.length; ++i) {
  v.add(array[i]);
}
...zur Antwort

Dazu kannst du den localStorage verwenden. Dieser basiert auf einem Key->Value-Prinzip. Zu einem Schlüssel kannst du also einen Wert festlegen und so eine Antwort speichern:

localStorage.setItem('antwort', 'xyz');

Diese Antwort kannst du auch nach dem Neuladen wieder abrufen:

var antwort = localStorage.getItem('antwort');

Wenn du mehrere Antworten hast, wäre die Verwendung eines Arrays angebracht. Speichern ist dann folgendermaßen möglich:

localStorage.setItem('antworten', JSON.stringify(antwortArray));

Der Abruf erfolgt so:

JSON.parse(localStorage.getItem('antworten'));

Findet kein Neuladen der Seite statt, genügt natürlich eine einfache Variable.

...zur Antwort

Guten Morgen zusammen,

nutzt ihr überhaupt youtube und andere soziale medien (facebook, intagram etc.)?

Ich nutze YouTube hin und wieder mal, aber das zählt für mich nicht als soziales Netzwerk. Ganz klassische soziale Netzwerke wie Facebook und Twitter nutze ich nicht. Gutefrage könnte man teilweise dazu zählen, aber eigentlich auch nicht so wirklich.

welche themenbereiche interessieren euch da am meisten?

Vor allem nutze ich YouTube für Musik, Musikvideos und Cover-Versionen. Außerdem ist etwas Comedy nicht schlecht. Ab und zu schaue ich mir mal ein Video an, in welchem ein kompliziertes Verfahren (Informatik, Mathematik etc.) erläutert wird.

welche kanäle würdet ihr weiterempfehlen?
  • Scoop
  • Verstehen Sie Spaß?
  • Vinheteiro
  • Joyce
  • News Be Funny
  • Alan Walker
  • K-391
  • Elektronomia

Außerdem habe ich mittlerweile mehrere inaktive Kanäle abonniert. Bei den meisten Kanälen schaue ich ohne Abo einfach so vorbei.

und welchen influencern folgt ihr so?

Gar keinen.

Allen einen schönen Dienstag! :-)

...zur Antwort
werden die privaten Atribute bei einer Unterklasse von der Oberklasse geerbt?

Wirf mal einen Blick in die JLS. Dort findest du Folgendes:

Members of a class that are declared private are not inherited by subclasses of that class.
A private field of a superclass might be accessible to a subclass - for example, if both classes are members of the same class. Nevertheless, a private field is never inherited by a subclass.

Das heißt im Klartext, private Attribute werden niemals vererbt. Es ist schon so, dass im RAM die privaten Attribute im Objekt enthalten sind, dies bezeichnet man aber nicht als Vererbung im klassischen Sinne, weil private Attribute nicht sichtbar sind. Man kann auf sie aus der Subklasse heraus nicht zugreifen.

Und wie kann man Zugang zu den privaten Atributen einer Oberklasse bei einer Unterklasse durch sie (Oberklasse) haben?

Dafür gibt es sogenannte Getter und Setter. Über diese kannst du Zugriff auf private Attribute erhalten:

class A {
  private int x = 0;

  public void setX(int x) {
    this.x = x;
  }

  public int getX() {
    return x;
  }
}

class B extends A {

}

Das klappt nicht:

B b = new B();
b.x = 5;
System.out.println(b.x);

Das hingegen schon:

B b = new B();
b.setX(5);
System.out.println(b.getX());

So allein ergeben Getter und Setter meist wenig Sinn. Hier findest du detailliertere Ausführungen zu der Thematik.

...zur Antwort
Kennt sich da jemand aus, wie es gehen könnte?

Wahrscheinlich gar nicht, solange du keinen Entwickler findest, der sich dafür bereit erklärt. Es gibt für das Gerät weder die TWRP- noch die CWM-Recovery. Auch bei XDA, wo man alle seriösen Custom-ROMs findet, gibt es keinen einzigen Thread zum Vivo Y67. Es gibt zwar Threads zu anderen Vivo-Geräten, aber selbst bei denen scheint in den Threads keinerlei Lösung gefunden worden zu sein. Ich fürchte, dass du das Gerät leider nicht rooten kannst, keine Custom-Recovery finden wirst und erst recht keine Custom-ROM.

...zur Antwort

Das lässt sich folgendermaßen umsetzen:

python3.7 -m pip install cx_Freeze
...zur Antwort

In Vanilla-Android gibt es keine solche Möglichkeit. Somit kann der Clipboard-Verlauf nur abgerufen werden, wenn ein Clipboard-Manager installiert ist bzw. der Smartphone-Hersteller selbst einen eingebaut hat (diesen könnte man beim Durchsuchen der Einstellungen finden, falls er vorhanden ist).

Für die Zukunft empfehle ich eine Tastatur mit integriertem Clipboard-Manager, beispielsweise SwiftKey. Für jetzt sehe ich keine Chance.

...zur Antwort

Was ist denn mit deiner Leiste passiert? Du kannst mobile Daten letztendlich auch über die Einstellungen aktivieren.

...zur Antwort
Kennt jemand so ein Programm? Es sollte Gratis sein... und, naja, ich meine es sollte eine  VOLLVERSIONsein!

Wie wäre es mit WordPress? WordPress ist kostenlos und frei. Du brauchst dann nur noch einen Webspace, auf welchen du deine Website hochladen kannst. Und selbst diesen gibt es kostenlos (wobei dies logischerweise mit einigen Einschränkungen verbunden ist): https://de.000webhost.com/kostenloses-wordpress-hosting

Natürlich kannst du WordPress auch auf einem eigenen Server zu Hause hosten. Dank dynamischem DNS musst du nur die Stromkosten bezahlen. Professioneller wäre natürlich eine statische IP und eine eigene Domain – für private Websiten ist dies jedoch nicht erforderlich.

...zur Antwort

Erst einmal brauchen wir eine Methode zum Einlesen der nächsten Zahl. Wir können nicht von nextInt Gebrauch machen, weil „Stop“ und „Ende“ keine Zahlen sind. Daher müssen wir Strings einlesen, wobei wir beachten müssen, dass es auch ungültige Eingaben geben könnte:

private static Integer nextInt() {
  String input = sc.next();
  while(true) {
    if (input.matches("-?\\d+")) { // falls Ganzzahl
      return Integer.valueOf(input);
    } else if(input.equals("Stop") || input.equals("Ende")) {
      return null;
    } else {
      System.out.println("Ungültige Eingabe!");
      input = sc.next();
    }
  }
}

Im Fall einer ungültigen Eingabe wiederholen wir die Abfrage so oft, bis es eine gültige Eingabe gibt (Ganzzahl oder „Stop“/„Ende“). Bei einer Ganzzahl wandeln wir diese in eine Ganzzahl um und geben sie zurück. Bei einem „Stop“/„Ende“ geben wir null zurück, damit wir darauf reagieren können.

Im Hauptprogramm erzeugen wir nun ein int-Array zum Speichern der drei Werte für die Namen. Ein Array hat hierbei den Vorteil, dass wir die Zahl der Namen ganz einfach verändern können. Anschließend lesen wir mithilfe unserer gerade eben erstellten Methode die nächste Zahl ein und addieren diese zum bisherigen Wert. Dies machen wir, solange die Methode nicht null zurückgibt:

int[] namen = new int[3];
System.out.print("Wert für Name 1: ");
Integer n = nextInt();

for (int i = 0; n != null; ++i) {
  namen[i % namen.length] += n;
  System.out.print("Wert für Name " + (((i+1) % namen.length) + 1) + ": ");
  n = nextInt();
}

Mit i % namen.length können wir den nächsten Namen zurückgeben. Der Modulo-Operator gibt uns den Rest zurück, der bei einer Division auftritt.

Abschließend können die Ergebnisse ausgegeben werden:

for (int i = 0; i < namen.length; ++i) {
  System.out.println("Name " + (i+1) + ": " + namen[i]);
}

Der vollständige Code würde damit folgendermaßen aussehen:

import java.util.Scanner;

public class Aufzaehlung {
  private static Scanner sc = new Scanner(System.in);

  public static void main(String[] args) {
    try {
      int[] namen = new int[3];
      System.out.print("Wert für Name 1: ");
      Integer n = nextInt();

      for (int i = 0; n != null; ++i) {
        namen[i % namen.length] += n;
        System.out.print("Wert für Name " + (((i+1) % namen.length) + 1) + ": ");
        n = nextInt();
      }

      System.out.println("------------------------------");
      for (int i = 0; i < namen.length; ++i) {
        System.out.println("Name " + (i+1) + ": " + namen[i]);
      }
    } finally {
      sc.close();
    }
  }

  private static Integer nextInt() {
    String input = sc.next();
    while(true) {
      if (input.matches("-?\\d+")) { // falls Ganzzahl
        return Integer.valueOf(input);
      } else if(input.equals("Stop") || input.equals("Ende")) {
        return null;
      } else {
        System.out.println("Ungültige Eingabe!");
        input = sc.next();
      }
    }
  }
}

Bei Unklarheiten bitte nachfragen – ich weiß, dass der Code für Einsteiger recht kompliziert aussieht. Dafür bietet er einen hohen Grad an Flexibilität.

Live-Beispiel: https://repl.it/repls/ShamefulVerticalHexagon

...zur Antwort
Bei meiner HTML Seite will ich durch einen Knopf auf eine neue Seite kommen, die die alte seite ersetzt.

Das lässt sich mithilfe eines Links umsetzen, welchen du wie einen Button stylst:

<a href="URL" class="btn">Klick!</a>
.btn {
  text-decoration: none;
  background-color: #49a0cc;
  color: #fff;
  padding: 10px 19px;
  border-radius: 4px;
  font-weight: 500;
}

Live-Beispiel: https://jsfiddle.net/ptcdyvha/

...zur Antwort

Die Signatur der main-Methode ist inkorrekt. So ist es richtig:

public class Willkommen {
  public static void main (String[] args){
    System.out.print("Herzlich Willkommen zum Java-Kurs!");
  }
}
...zur Antwort

Das sind sehr viele komplexe Fragen. Hoffentlich liest du das alles, was ich jetzt schreibe. Eigentlich wird das meiste davon sogar schon an Gymnasien im Informatik-Unterricht gelehrt und entspricht einem ganzen Semester...

Logikgatter

Ich weiß dass eine CPU aus unzählig vielen Transistoren besteht. Somit ein Binärsystem besitzt (1;0).

Allein mit dem Prinzip der Transistoren kommt man nicht weiter, das ist zu nah an der wirklichen Hardware. Um etwas Komplexes wie einen Computer zu entwickeln, ist stets Abstraktion erforderlich. Die erste Abstraktionsebene stellen dabei die sogenannten Logikgatter dar. Diese basieren auf dem EVA-Prinzip: Binäre Eingaben werden durch eine Schaltung (bestehend aus Transistoren) in binäre Ausgaben umgewandelt. Dabei existieren drei Grundgatter:

Es gibt AND-, OR- und NOT-Gatter. Hier findest du zugehörige Symbole und Tabellen detailliert erklärt.

Das UND-Gatter liefert am Ausgang nur eine 1, sofern beide Eingaben 1 sind. Das ODER-Gatter liefert am Ausgang eine 1, sofern mindestens eine der beiden Eingaben 1 ist. Das NICHT-Gatter liefert am Ausgang eine 1, sofern die Eingabe 0 ist, ansonsten liefert es eine 0. Diese Gatter basieren auf bestimmten elektrischen Schaltungen, welche aber im weiteren Verlauf nicht mehr relevant sind. Es ist wichtig, dass man das Prinzip der Gatter verinnerlicht hat, bevor man sich Gedanken über eine CPU machen kann.

In der Praxis werden zwar die drei Grundgatter oft alle durch NAND-Gatter umgesetzt, aber das vernachlässigen wir der Einfachheit halber mal.

Zum Ausprobieren eignet sich das Programm LogicSIM.

JKMS-Flip-Flop

Die Grundgatter lassen sich zu komplexeren Schaltungen zusammenschließen, sodass wir beispielsweise sogar Daten speichern können. Wichtig sind noch die sogenannten JK-Flip-Flops sowie Multiplexer. Ein JKMS-Flip-Flop sieht so aus:

Der mittlere Eingang dient für ein Taktsignal, d. h. eine regelmäßige Abfolge von Einsen und Nullen:

Bei einer steigenden Taktflanke werden die Eingaben eingelesen, bei der nächsten fallenden Taktflanke ausgegeben. Sofern der obere Eingang beim Einlesen gesetzt ist, wird eine 1 gespeichert. Ist dagegen der untere Eingang beim Einlesen gesetzt, wird eine 0 gespeichert. Der gespeicherte Wert liegt am Ausgang an. Der untere Ausgang ist dasselbe, nur negiert. Ein JKMS-Flip-Flop ist eigentlich eine Zusammensetzung aus zwei JK-Flip-Flops. Ein JK-Flip-Flop wiederum ist aus einem RS-Flip-Flop zusammengesetzt. Dieses sieht mit den Grundgattern so aus, damit du dir vorstellen kannst, wie das überhaupt funktionieren kann:

Geschickt, oder? Jedenfalls werde ich jetzt nicht erklären, wie man davon zum JK-Flip-Flop und letztendlich zum JSMS-Flip-Flop kommt. Das ist auch gar nicht so relevant. Baue das mal in LogicSIM nach und spiele ein bisschen herum, schaue dir an, wie das reagiert.

Multiplexer

Ein Multiplexer wählt aus einer Reihe von Eingaben eine aus und schaltet diese an den Ausgang durch. Hier die Schaltung für einen 1-MUX:

s ist quasi ein Schalter. Ist s 0, so wird der obere Ausgang durchgeschaltet, ansonsten der untere. Ebenso gibt es auch einen 2-MUX, welcher zwei Schalteingänge besitzt und somit vier verschiedene Eingaben durchschalten kann.

Das reicht erst einmal an Grundlagen. Das waren nur mal ein paar Beispiele. Die weiteren Grundlagen musst du für ein tieferes Verständnis recherchieren und dir erarbeiten.

Von-Neumann-Architektur

Die Von-Neumann-Architektur bildet die Grundlage für den Aufbau heutiger Computer:

Quelle: Lukas Grossar, Von-Neumann Architektur, CC0, Wikimedia Commons

Die CPU ist dabei aus Rechenwerk (ALU) und Steuerwerk zusammengesetzt. Über ein Bus-System können diese mit dem Ein-/Ausgabewerk sowie dem Speicherwerk kommunizieren. Nur in diesem Verbund ergeben die einzelnen Komponenten überhaupt Sinn. Wenn du die Funktionsweise einer CPU klären möchtest, musst du immer alle weiteren Komponenten in die Überlegungen hinzuziehen.

Ein Modellrechner

Der Aufbau heutiger Prozessoren ist sehr komplex. Daher ist es fast unmöglich, anhand der Struktur einen Einblick in Aufbau und Funktionsweise eines Computers zu bekommen. Aus diesem Grund wird oftmals ein Modellrechner zur Rate gezogen, dessen Struktur vereinfacht ist. Der grobe Aufbau des im Folgenden betrachteten Modellrechners ist in der folgenden Abbildung dargestellt:

Wie aus der Abbildung hervorgeht, ist ein Computer modular aufgebaut. Deshalb ist es sinnvoll, die Funktion jeder Komponente im Einzelnen zu beschreiben:

  1. Der Taktgeber: Aus einem Dauertaktsignal werden fünf Taktimpulse generiert: Die ersten vier Takte dienen der Rechnung, der fünfte Takt dient der Erhöhung des Befehlszählers um eins und dem Übertragen des aktuellen Befehls aus dem RAM in das Befehlsregister.
  2. Der Befehlszähler: Legt fest, welcher Befehl aus dem RAM ausgelesen wird, indem er die jeweilige Speicherzelle adressiert.
  3. Der RAM: Hier werden alle Befehle gespeichert.
  4. Das Befehlsregister: Das Befehlsregister erhält aus dem RAM mithilfe der Adressierung durch den Befehlszähler den aktuell durchzuführenden Befehl und speichert diesen.
  5. Das Steuerwerk: Das Steuerwerk gibt je nach Belegung des Befehlsregisters unterschiedliche Signale an die Bauteile ab.
  6. Das Eingaberegister: Das Eingaberegister speichert eine Zahl, welche beim nächsten Taktsignal an das Rechenwerk übergeben wird.
  7. Das Rechenwerk (ALU): Hier wird die Zahl aus dem Eingaberegister mit der Zahl aus dem Akkumulator verrechnet. Das Ergebnis wird wiederum im Akkumulator gespeichert, sodass damit weiter gerechnet werden kann.
  8. Ausgaberegister: Bei einem bestimmten Befehlscode wird der Wert des Akkumulators in das Ausgaberegister geschoben und dort als Ausgabe zwischengespeichert.

Eine solche Schaltung kann konkret folgendermaßen realisiert werden:

Programmierung des Modellrechners

Damit kannst du beispielsweise 2+2 rechnen. Der obige Rechner ist wenig flexibel – du musst alles von Hand machen. Daher verlinke ich einfach mal eine 4-Bit-CPU:

https://simulator.io/board/AWZpw7Fy3I/2

Das ist letztendlich die praktische Umsetzung obiger Überlegungen. Der Befehlssatz der CPU ist dort ebenfalls aufgeführt:

https://imgur.com/a/zuRd1ZP

Nehmen wir als Beispiel mal kein Videospiel sondern eine Matheaufgabe: Wenn ich 2+2 rechnen will, wird dann einfach ein Code aus mehreren 1 und 0 abgerufen oder wie darf ich das verstehen?

Um also zwei Zahlen zu addieren, würde sich folgendes Programm eignen:

IN
SWP
IN
ADD
OUT

Binär:

0000
0011
0000
0100
0001

Das kannst du auf der Website direkt oben links im ROM per Edit eintragen und die Simulation per Klick auf das dritte Taktsignal starten. So sollte es aussehen:

https://imgur.com/a/UFwdGLj

Nun kannst du damit zwei Zahlen addieren. Nun probieren wir mal etwas Komplizierteres: Wir addieren zwei Zahlen und, sofern die Summe 8 ist, geben wir 5 aus. Ansonsten fragen wir wieder zwei neue Zahlen ab – so lange, bis irgendwann die Summe 8 ist. Das würde so aussehen:

IN
SWP
IN
ADD
SWP
MOV
8
SUB
JZ
12
JMP
0
MOV
5
OUT

Binär:

0000
0011
0000
0100
0011
0010
1000
0101
1011
1100
1010
0000
0010
0101
0001
Und dann zum 2. Teil der Frage: Wie arbeitet eine Programmiersprache? Wie wird es bewerkstelligt dass der PC auf die eingegebenen Zeilen reagiert?

Das geschieht genauso, wie eben beschrieben. Nun handelt es sich dabei um Maschinencode, Einsen und Nullen. Das kann man sich kaum merken, daher gibt es Programmiersprachen der zweiten Generation, sogenannte Assemblersprachen. Diese nutzen, wie man oben sieht, Symbole in Textform (z. B. IN, SWP, ADD, MOV).

...zur Antwort

Wie ist denn die genaue Aufgabenstellung aus? Kannst du sie fotografieren? Sollen die geometrischen Formen auch sichtbar sein oder geht es hier rein um Objektorientierung? Wenn ja, habt ihr bisher mit Swing gearbeitet und damit gezeichnet? Kannst du denn in deinen Aufzeichnungen nicht nachschauen, wie ihr das gemacht habt oder was ist genau das Problem? Die konkrete Aufgabenstellung wäre auf jeden Fall hilfreich.

...zur Antwort

Guten Morgen,

ich nehme an, dieses bedingungslose Grundeinkommen sei tatsächlich irgendwie möglich, würde ich trotzdem arbeiten gehen, weil mir die Arbeit Spaß macht. Außerdem muss ja irgendwer die ganze Software schreiben, die wir im heutigen "IT-Zeitalter" benötigen.

Das zusätzliche Geld kann ich beispielsweise gut für Spenden gebrauchen. Es gibt sehr viele Software-Projekte, z. B. Wikipedia oder Linux, die auf Spenden angewiesen sind. Darüber hinaus gibt es eine Reihe weiterer gemeinnütziger Organisationen, die sich für andere Menschen, Kinder oder die Umwelt einsetzen. Auch diese sollten unterstützt werden.

Mehr Freizeit wäre natürlich nicht schlecht. Es gibt sehr viele Länder zu erkunden und bisher beschränken sich meine Reisen so ziemlich auf Europa bzw. Europa-nahe Orte. Gerne würde ich auch Reisen an fernere Orte unternehmen. Es ist aber sehr schwierig, denn der Tourismus sollte möglichst sanft und nachhaltig sein. Es ist schon erstaunlich, welche Folgen das sonst auf die Umwelt und die Bevölkerung haben kann.

Ich würde also trotzdem arbeiten, aber gerne mehr Freizeit und Urlaub haben.

Letzter Tag der Woche - schon jetzt allen ein schönes Wochenende! ;-)

...zur Antwort

Wie wäre es so?

def isFloat(n):
  try:
    num = float(n)
    return True
  except ValueError:
    return False

# .....

Minimal = min([i for i in temperatures if isFloat(i)])
...zur Antwort

Die Höhe kannst du so nicht angeben. Korrekt wäre:

var winH = $win.height() * 0.1;

Ich jedoch denke, du meinst eher dies:

var winH = $nav.offset().top - $win.height() * 0.9;

Dabei ändert sich die Farbe, sobald das Element zu 10% sichtbar ist.

Live-Beispiel: https://jsfiddle.net/cx2vaqur/

...zur Antwort