JavaScript

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Benutzeravatar
pixewakb
User
Beiträge: 1228
Registriert: Sonntag 24. April 2011, 19:43

Sonntag 20. Januar 2019, 00:16

Kennt Ihr ein gutes JavaScript-Forum, das man kennen sollte? Falls Ihr Ressourcen zu JavaScript kennt, die man bookmarken sollte, wäre eine Information auch nett.

Ich entwickle keine (!) Webseiten, sondern will JavaScript nutzen, um bestehende HTML-Berichte aufzuhübschen (Werte einfärben in einer Tabelle) und im Einzelfall zu dynamisieren. Ein Framework macht daher wahrscheinlich keinen Sinn.
Benutzeravatar
__blackjack__
User
Beiträge: 3522
Registriert: Samstag 2. Juni 2018, 10:21

Sonntag 20. Januar 2019, 00:59

@pixewakb: Es gibt da teilweise Puristen die meinen es sei nicht mehr nötig, aber ich mag jQuery lieber als die DOM-Funktionen vom Browser.
A train station is where trains stop.
A bus station is where busses stop.
A Work Station is where …
Benutzeravatar
noisefloor
User
Beiträge: 2699
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Dienstag 5. Februar 2019, 19:55

Hallo,
Falls Ihr Ressourcen zu JavaScript kennt, die man bookmarken sollte, wäre eine Information auch nett.
MDN - Mozilla Developer Network. Das ist eine sehr gute Doku für HTML, CSS und JavaScript.
Ein Framework macht daher wahrscheinlich keinen Sinn.
Doch, gerade dann, wenn man nicht so der JavaScript Crack ist. jQuery hat zwar IMHO etwas an Hype und Bedeutung mit der aktuellen Versionen / Funktionen von JavaScript verloren, ist aber immer noch extrem praktisch. Plus umfassend dokumentiert und man findet im Web viele Lösungen (z.B. bei SO).
Wenn ich z.B. eine HTML Tabelle brauche, die nach jeder Spalte sortierbar sein soll, dann nehme ich auch jQuery und ein Table Sort Plugin. Dann ist das ganze mit ein paar Zeilen Code fertig.

@__blackjack__: Puristen gibt es in der Tat einige. Wobei ich finde, dass vielen Selektoren inzwischen auch mit Bordmitteln von JS gut gehen und seitdem es `fetch` in JS gibt, nehme ich auch das statt die Funktionen aus jQuery. Aber jQuery ist für vielle Sachen nach wie vor: praktisch.

Gruß, noisefloor
nezzcarth
User
Beiträge: 693
Registriert: Samstag 16. April 2011, 12:47

Mittwoch 6. Februar 2019, 17:31

noisefloor hat geschrieben:
Dienstag 5. Februar 2019, 19:55
@__blackjack__: Puristen gibt es in der Tat einige...Aber jQuery ist für vielle Sachen nach wie vor: praktisch.
jQuery ist sicherlich eine der sinnvolleren JavaScript Bibliotheken. Angesichts des Bibliotheks- und Tooling-Chaos, das meiner Wahrnehmung nach speziell im JavaScript-Lager vorherrscht, kann ich aber ehrlich gesagt schon irgendwie nachvollziehen, wie man da leicht in radikalere Positionen abdriften kann.
DasIch
User
Beiträge: 2504
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Donnerstag 7. Februar 2019, 01:10

So ein großes Chaos existiert im JS Umfeld gar nicht. Das Ökosystem ist halt groß und es gibt viele die in dem Bereich arbeiten, dementsprechend viel wird investiert, es wird relativ schnell Fortschritt gemacht und es gibt keinen sonderlich stark ausgeprägten Kompatibilitätsfetisch. Das heißt es gibt viele Experimente aber viele davon sterben dann auch und so konvergiert dann alles irgendwann zu bestimmten Lösungen.

Wer es für zu risikoreich hält auf dem Server was aktuelleres als Debian Stable oder gar Red Hat zu nutzen, für den ist dies natürlich chaotische Anarchie. Wenn man nicht wirklich aktiv seinen Code maintainen möchte oder dies nicht kann wird damit auch früher oder später Probleme bekommen. Das hätte man aber auch wenn Django Releases, in dem selben Umfang den sie jetzt haben, monatlich passieren würden statt alle 6 Monate oder so. Hat man halt nicht weil ein paar Größenordnungen weniger Leute Django weiter nach vorne bringen.
nezzcarth
User
Beiträge: 693
Registriert: Samstag 16. April 2011, 12:47

Sonntag 10. Februar 2019, 21:49

Es ist sicher richtig, dass im JavaScript Bereich sehr viel passiert und sich dadurch auch viel verändert. Ich finde es aber zu kurz griffen, das als ausreichende Begründung für die "Bibliothekssituation" hinzunehmen. Was ich mit Chaos meine, ist z.B. so etwas hier:

Code: Alles auswählen

$ npm install gulp  
 ... 
+ gulp@4.0.0
added 316 packages from 216 contributors and audited 6374 packages in 16.468s
found 0 vulnerabilities

$ cd node_modules/gulp
$ npm install
npm WARN deprecated istanbul@0.4.5: This module is no longer maintained, try this instead:
npm WARN deprecated   npm i nyc
npm WARN deprecated Visit https://istanbul.js.org/integrations for other alternatives.
npm WARN deprecated jscs-preset-wikimedia@1.0.1: Deprecated in favour of eslint-config-wikimedia. -- https://phabricator.wikimedia.org/T118941
npm WARN deprecated nomnom@1.8.1: Package no longer supported. Contact support@npmjs.com for more info.
npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated circular-json@0.3.3: CircularJSON is in maintenance only, flatted is its successor.
npm WARN deprecated boom@2.10.1: This version is no longer maintained. Please upgrade to the latest version.
npm WARN deprecated hoek@2.16.3: This version is no longer maintained. Please upgrade to the latest version.
npm WARN deprecated cryptiles@2.0.5: This version is no longer maintained. Please upgrade to the latest version.
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.7 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.7: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

added 676 packages from 795 contributors and audited 7506 packages in 16.592s
found 14 vulnerabilities (7 low, 5 moderate, 1 high, 1 critical)
  run `npm audit fix` to fix them, or `npm audit` for details

Vielleicht mache ich ja etwas falsch, aber für mich fühlt sich es nicht richtig an, dass da mehrere 100 Dependencies benötigt werden. Da finde ich den Begriff Chaos ehrlich gesagt nicht ganz aus der Luft gegriffen. Ich verwende ja auch gerne Bibliotheken und praktische Tools. Es wirkt aber manchmal so, als wäre die Beziehung einiger JavaScript-Leute zu ihren Bibliotheken und Tools eine ganz besonders innige, die nicht allein auf technischen Gründen beruht. :)
Benutzeravatar
pixewakb
User
Beiträge: 1228
Registriert: Sonntag 24. April 2011, 19:43

Mittwoch 13. Februar 2019, 20:59

Kennt ihr ein JavaScript-Forum, das ihr nutzen würdet?
Benutzeravatar
noisefloor
User
Beiträge: 2699
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Mittwoch 13. Februar 2019, 21:19

Hallo,

also ich kenne / nutze keins. Bis dato konnte ich bei meine (meist eher einfachen) JS Problemen immer mit MDN oder gelösten Threads bei SO lösen.

Gruß, noisefloor
Benutzeravatar
pixewakb
User
Beiträge: 1228
Registriert: Sonntag 24. April 2011, 19:43

Donnerstag 14. Februar 2019, 08:06

Danke, ich finde mich langsam zurecht. Ich musste gerade mittels SO feststellen, dass JavaScript für arrays keine funktionierende Sortierfunktion mitliefert, die meine Erwartungen erfüllt. Ich habe gerade dafür ein eigenes Snipplet in meinen Quellcode einfügen müssen. Den Hype um JavaScript kann ich momentan nur schwer nachvollziehen, wenn die Möglichkeit Sachen im Browser zu ändern auch interessant ist.
Benutzeravatar
__blackjack__
User
Beiträge: 3522
Registriert: Samstag 2. Juni 2018, 10:21

Donnerstag 14. Februar 2019, 10:18

@pixewakb: Es ist halt die einzige Möglichkeit etwas auf Clientseite auszuführen, seit dem Plugins für Flash und Java aus der Mode sind. Wobei Flash's ActionScript ja im Grunde auch JavaScript war.

Die Standardbibliothek ist natürlich deutlich weniger Umfangreich als man das von Python her gewohnt ist, so dass man eher zusätzliche Bibliotheken braucht. Da ich sowieso Lodash einbinde, fehlt mir wegen `_.sortBy()` und `_.orderBy()` auch kein direkt eingebautes sortieren von Arrays. Obwohl es das doch eigentlich gibt mit `Array.sort()`, dem man ja auch eine eigene Vergleichsfunktion mit auf den Weg geben kann‽
A train station is where trains stop.
A bus station is where busses stop.
A Work Station is where …
DasIch
User
Beiträge: 2504
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Donnerstag 14. Februar 2019, 14:29

Code: Alles auswählen

$ node
> let a = [2, 1, 3];
undefined
> a.sort()
[ 1, 2, 3 ]
Mach dass in der Console eines brauchbaren Browsers und du bekommst auto-completion die dir was über erwähnte Vergleichsfunktion sagt.

Findet man auch sehr gut in MDN: https://developer.mozilla.org/de/search ... t&topic=js

SO ist keine gute Quelle für Informationen, erst recht nicht bei Dingen die sich relativ schnell ändern oder wozu viele Leute mit wenig Ahnung viel meinen sagen zu können.
Benutzeravatar
pixewakb
User
Beiträge: 1228
Registriert: Sonntag 24. April 2011, 19:43

Donnerstag 14. Februar 2019, 19:23

Also das hier war im Prinzip das, was mich heute überrascht hat:

Code: Alles auswählen

let b = [-2, 1, 3, -4, 5]
undefined
b.sort()
(5) [-2, -4, 1, 3, 5]
Ich hatte das bis heute für eine "normale" Aufgabenstellung gehalten und nicht erwartet, dass ich da etwas machen müsste, um diese (!) Aufgabe zu lösen. Möglicherweise bin ich von Python zu viel gewohnt. node.js (du nutzt das anscheinend) kenne ich dem Namen nach, ich schaue bei JS aber gerade erst einmal rein. Ich möchte Berichte aufmotzen, die ich erzeuge. Ach ja: Als ich mit Python angefangen habe, war die Empfehlung, man könnte alternativ auch JavaScript lernen, das sei ebenfalls sehr stark und weiter verbreitet. Im Nachhinein bin ich dankbar, dass ich mich mit Python befasst habe...
Benutzeravatar
__blackjack__
User
Beiträge: 3522
Registriert: Samstag 2. Juni 2018, 10:21

Donnerstag 14. Februar 2019, 19:32

Code: Alles auswählen

> b.sort((a, b) => a - b)
[ -4, -2, 1, 3, 5 ]
Oder halt mit LoDash's `sortBy()`:

Code: Alles auswählen

> _.sortBy(b)
[ -4, -2, 1, 3, 5 ]
A train station is where trains stop.
A bus station is where busses stop.
A Work Station is where …
Sirius3
User
Beiträge: 9999
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 14. Februar 2019, 19:34

Man darf halt nicht ungesehen irgendwelches Verhalten annehmen. JavaScript ist schwach typisiert und wandelt oft bei Bedarf in Strings um, und da ist diese Reihenfolge ganz logisch, und auch so dokumentiert: https://developer.mozilla.org/de/docs/W ... Array/sort

Will man numerisch sortieren, muß man nur die richtige Sortierfunktion angeben:

Code: Alles auswählen

b.sort((x,y)=>x-y)
Benutzeravatar
__blackjack__
User
Beiträge: 3522
Registriert: Samstag 2. Juni 2018, 10:21

Freitag 15. Februar 2019, 12:05

@pixewakb: Wobei ich immer wieder merke wie viel JavaScript mittlerweile von Python ”ausgeborgt” hat. Ich habe gerade mal spasseshalber die schriftliche Division, die hier Thema ist, in JavaScript implementiert, und wenn man sich ein paar ``var``\s, geschweifte Klammern, und Semikolons weg denkt, liest sich das fast wie Python:

Code: Alles auswählen

#!/usr/bin/env node
'use strict';

Number.prototype.appendDigit = function(digit) { return this * 10 + digit; };


function simpleDivide(divident, divisor) {
  if (divisor === 0) return Infinity;
  if (divident < 0 || divisor < 0) return NaN;
  
  var [quotient, remainder] = [0, divident];
  while (remainder >= divisor) {
    quotient += 1;
    remainder -= divisor;
  }
  
  return [quotient, remainder];
}


function divide(divident, divisor) {
  if (divisor === 0) return Infinity;
  if (divident < 0 || divisor < 0) return NaN;
  
  var quotient, remainder, resultDigit;
  quotient = remainder = 0;
  for (var dividentDigit of divident.toString()) {
    [resultDigit, remainder] = simpleDivide(
      remainder.appendDigit(parseInt(dividentDigit)), divisor
    );
    quotient = quotient.appendDigit(resultDigit);
  }
  
  return [quotient, remainder];
}


function main() {
  for (var [divident, divisor] of [[500, 4], [1260257, 37], [26, 11]]) {
    var [quotient, remainder] = divide(divident, divisor);
    console.log(`${divident} ÷ ${divisor} = ${quotient} remainder ${remainder}`);
  }
}


if (require.main === module) main();
A train station is where trains stop.
A bus station is where busses stop.
A Work Station is where …
Antworten