!bckdVuIloZOXRjKIXO:matrix.org

JavaScript in Jena

35 Members
MeatSpace treffen mit Leuten die gerne JavaScript programmieren | https://jena.js.org7 Servers

Load older messages


SenderMessageTime
4 Dec 2019
@gelight:matrix.orggelight

:

Nachträglich noch mal einen schönen ersten Advent und bald 2ten Advent schon mal vorweg 🙂

Hätte mal eine Frage:
Hat von euch schon mal jemand einen Living Style Guide aus technischer Sicht selber gebaut?

Ich weiß, dass es Style-Guide generatoren gibt aber die sind alle zu sehr an eine bestimmte Technologie geknüpft. Ich erkläre einfach mal grob, wie es bei uns im Unternehmen so läuft. Vielleicht wird dann meine Frage etwas verständlicher. Ich sag auch mein aktuelles Problem dazu:

13:36:46
@gelight:matrix.orggelightAlso bei uns wird neben auf MicroServices aufgebaut. Heißt .... die Teams können sich bei Bedarf selbst für eine eigene Technologie entscheiden. Okay .... jetzt mal zum Thema UI und alles, was da so dazu gehört.13:38:06
@gelight:matrix.orggelightWir haben eine allgemeine Technologie im Unternehmen, über die wir unsere jeweiligen "Seiten" aus vielen einzelnen Calls ( Micro-Frontends / HTML Snippets ) zusammen bauen. Jeder Service liefert am Ende kleine HTML Snippets + all ihre benötigten Assets.13:40:27
@gelight:matrix.orggelightSoweit so gut ... jetzt baut unser Team also an einer Backend-Applikation, die auf die gleiche Weise erstellt wird. Aktuell baut jedes Team sozusagen jeden Bestandteil ihrer Oberfläche selbst. Da es eine "Backend-Applikation" ist, wollen wir das in Zukunft gern mit Hilfe von WebComponents "etwas" einheitlicher gestalten. So dass die Teams halt auf eine Styleguide Seite gehen können, sich anschauen können, welche Komponenten es gibt, die sie in ihren UI Snippets verwenden können.13:44:42
@gelight:matrix.orggelightFakt ist bei uns auch, dass praktisch jedes Team solche Web-Components schreiben darf. Nun kommen natürlich immer wieder Fragen von anderen Teams wie: "Welche UI Komponenten gibt es, wo finden wir die, wie benutzen wir die, was können die alles und wie sehen sie aus?"13:48:09
@gelight:matrix.orggelight

Dazu hatte ich nun die grundlegende Idee, ein Package einer WC einfach so aufzubauen, dass man förmlich einen Ordner hat, worin man die reine Component entwickelt und einen weiteren, wo man Docu-Snippets und auch Live-Demos oder sowas drin ablegen kann. Allgemein war meine Idee zu den Doku's so, dass man , um einen visuellen einheitlichen Stil zu gewährleisten, alle Informationen als *.md ( MarkDown ) Files schreibt.

Frage 1 wäre nun:
Wie würdet ihr die "einzelnen" Live-Demo-Beispiele bauen und zur Verfügung stellen?

Frage 1 wäre nun:

13:52:44
@gelight:matrix.orggelight *

Dazu hatte ich nun die grundlegende Idee, ein Package einer WC einfach so aufzubauen, dass man förmlich einen Ordner hat, worin man die reine Component entwickelt und einen weiteren, wo man Docu-Snippets und auch Live-Demos oder sowas drin ablegen kann. Allgemein war meine Idee zu den Doku's so, dass man , um einen visuellen einheitlichen Stil zu gewährleisten, alle Informationen als *.md ( MarkDown ) Files schreibt.

Frage 1 wäre nun:
Wie würdet ihr die "einzelnen" Live-Demo-Beispiele bauen und zur Verfügung stellen?

Frage 2:
Wie könnte das Package des Living-Style-Guide aussehen bzw. wie könnte man die ganzen Informationen "möglichst" automatisiert so zusammen mergen, dass am Ende eine HTML bei raus kommt, die halt Infos zur Komponente gibt, wie auch Live-Demos zeigt etc......

13:54:09
@gelight:matrix.orggelightBeispiel: https://material.io/components/buttons/13:54:40
@gelight:matrix.orggelightWie gesagt... andere Teams sollen auf basis eigener Techniken ihre Komponenten bauen können. Das Einzige, was man vorgeben könnte, wäre eine Struktur, die für eine automatische Anzeige der Informationen im Styleguide, denke ich ....13:56:27
6 Dec 2019
@tobi:im.kabi.tkTobikann jemand von starmaker.com downloaden? Ist JS, aber die haben die files so versteckt das youtube-dl nicht mehr geht21:06:59
@tobi:im.kabi.tkTobi * kann jemand von starmakerstudios.com downloaden? Ist JS, aber die haben die files so versteckt das youtube-dl nicht mehr geht21:07:29
7 Jan 2020
@tobi:im.kabi.tkTobi kein Java aber vielleicht kann jemand schnell helfen: Excel-VBA. Ich wähle einige Spalten mit
Range("a1,b1,e1").Entire.Column.ExportAsFixedFormat _
um sie als PDF zu exportieren. Natürlich sind die jetzt jeweils auf einer Seite und nicht nebeneinander. Muss ich die vorher erst selektieren mit .select und dann wie weiter... ?
12:56:28
@tobi:im.kabi.tkTobi

hmm mit select ist es das gleich, eigentlich klar

wsA.Range("a1,b1").EntireColumn.Select

        Selection.ExportAsFixedFormat _

        Type:=xlTypePDF, _

        Filename:=myFile, _

Auch so wird jede Spalte auf einem extra Blatt ausgegeben

13:04:28
@tobi:im.kabi.tkTobiwsA ist eine variable13:04:35
20 Jan 2020
@tarvos90:matrix.orgtarvos90uh VBA ist leider zu lange her, aber konntest du es lösen?11:46:58
@tarvos90:matrix.orgtarvos90

Ich hab auch eine Frage, vielleicht weiß ja jemand wie man das bequem löst.
Ich muss Elemente miteinander vergleichen und wenn ein Element mit allen bisherigen Elementen
der Liste mir ein 'unknown' liefert, dann ist das ein neues Element.
Wenn das NICHT so ist, hätte ich gern das label des bereits bekannten Elements.

Mir wurde geraten dafür ein Maybe Pattern (in TypeScript) zu verwenden aber so richtig werde ich daraus nicht schlau.
Naja hier erst mal mein Code:

function knownState(
  referenceList: UpgradedDecetionInterface[],
  currentElement: UpgradedDecetionInterface
): boolean {
  const newPerson = referenceList.every(referenceFace => {
    const bestMatch = referenceFace.faceMatcher.findBestMatch(
      currentElement.descriptor[0]
    );

    return bestMatch.label === 'unknown';
  });

  return newPerson;
}```
`newPerson` ist nur dann true, wenn das `every` bei jedem bisherigen Element 'unknown' ist, wie schon erwähnt.
Das Ding ist, wie komm ich jetzt am besten an das Label rann, ohne noch mal `findBestMatch` auszuführen?

Benutzen tue ich das bisher so:
```Javascript
const copyListOfDetections = listOfDetections;
let resultList: UpgradedDecetionInterface[] = [];

copyListOfDetections.map((detection, index) => {
    if (index >= 1) {
        const stateOfDetection = knownState(resultList, detection);

        if (stateOfDetection.known) {
            console.log('Kenn ich');
        } else {
            console.log('Kenn ich nicht');
            resultList.push(detection);
        }
    }
}```

11:53:24
@tarvos90:matrix.orgtarvos90 *

Ich hab auch eine Frage, vielleicht weiß ja jemand wie man das bequem löst.
Ich muss Elemente miteinander vergleichen und wenn ein Element mit allen bisherigen Elementen
der Liste mir ein 'unknown' liefert, dann ist das ein neues Element.

Wenn das NICHT so ist, hätte ich gern das label des bereits bekannten Elements.

Mir wurde geraten dafür ein Maybe Pattern (in TypeScript) zu verwenden aber so richtig werde ich daraus nicht schlau.
Naja hier erst mal mein Code:

function knownState(
  referenceList: UpgradedDecetionInterface[],
  currentElement: UpgradedDecetionInterface
): boolean {
  const newPerson = referenceList.every(referenceFace => {
    const bestMatch = referenceFace.faceMatcher.findBestMatch(
      currentElement.descriptor[0]
    );

    return bestMatch.label === 'unknown';
  });

  return newPerson;
}

newPerson ist nur dann true, wenn das every bei jedem bisherigen Element 'unknown' ist, wie schon erwähnt.
Das Ding ist, wie komm ich jetzt am besten an das Label rann, ohne noch mal findBestMatch auszuführen?

Benutzen tue ich das bisher so:

const copyListOfDetections = listOfDetections;
let resultList: UpgradedDecetionInterface[] = [];

copyListOfDetections.map((detection, index) => {
    if (index >= 1) {
        const stateOfDetection = knownState(resultList, detection);

        if (stateOfDetection.known) {
            console.log('Kenn ich');
        } else {
            console.log('Kenn ich nicht');
            resultList.push(detection);
        }
    }
}```

11:53:47
@tarvos90:matrix.orgtarvos90 *

Ich hab auch eine Frage, vielleicht weiß ja jemand wie man das bequem löst.
Ich muss Elemente miteinander vergleichen und wenn ein Element mit allen bisherigen Elementen
der Liste mir ein 'unknown' liefert, dann ist das ein neues Element.

Wenn das NICHT so ist, hätte ich gern das label des bereits bekannten Elements.

Mir wurde geraten dafür ein Maybe Pattern (in TypeScript) zu verwenden aber so richtig werde ich daraus nicht schlau.
Naja hier erst mal mein Code:

function knownState(
  referenceList: UpgradedDecetionInterface[],
  currentElement: UpgradedDecetionInterface
): boolean {
  const newPerson = referenceList.every(referenceFace => {
    const bestMatch = referenceFace.faceMatcher.findBestMatch(
      currentElement.descriptor[0]
    );

    return bestMatch.label === 'unknown';
  });

  return newPerson;
}

newPerson ist nur dann true, wenn das every bei jedem bisherigen Element 'unknown' ist, wie schon erwähnt.
Das Ding ist, wie komm ich jetzt am besten an das Label rann, ohne noch mal findBestMatch auszuführen?

Benutzen tue ich das bisher so:

const copyListOfDetections = listOfDetections;
let resultList: UpgradedDecetionInterface[] = [];

copyListOfDetections.map((detection, index) => {
    if (index >= 1) {
        const stateOfDetection = knownState(resultList, detection);

        if (stateOfDetection.known) {
            console.log('Kenn ich');
        } else {
            console.log('Kenn ich nicht');
            resultList.push(detection);
        }
    }
}
11:54:06
@tarvos90:matrix.orgtarvos90Jedenfalls hab ich dann mal etwas zu diesem Maybe Pattern gelesen, und versucht anzuwenden:11:54:35
@tarvos90:matrix.orgtarvos90
export class UnknownDetection {
    known: boolean = false;
}

export class KnownDetection {
    known: boolean = true;
    label: string;
    distance: number;
}

export type knownDetection = UnknownDetection | KnownDetection;
11:54:52
@tarvos90:matrix.orgtarvos90

sah dann so aus:

function knownState(
    referenceFaces: UpgradedDecetionInterface[],
    currentDetection: UpgradedDecetionInterface,
): knownDetection {
    let knownPersonLabel: knownDetection = { known: false };

    const newPerson = referenceFaces.every(referenceFace => {
        const bestMatch = referenceFace.faceMatcher.findBestMatch(
            currentDetection.descriptor[0],
        );

        if (bestMatch.label !== 'unknown') {
            knownPersonLabel = {
                distance: bestMatch.distance,
                known: true,
                label: bestMatch.label,
            };
        }

        return bestMatch.label === 'unknown';
    });

    if (newPerson) {
        const unknownState = {
            known: false,
        };
        console.log(unknownState);

        return unknownState
    } else {
        console.log(knownPersonLabel);

        knownPersonLabel;
    }
}
11:55:36
@tarvos90:matrix.orgtarvos90aber das ist irgendwie alles nicht so geil :D11:55:43
@tim:schumacher.im0xAFFE tarvos90: Könnte man dafür nicht auch Array.prototype.reduce benutzen? 11:57:46
@tarvos90:matrix.orgtarvos90statt dem every? hm11:58:22
@tim:schumacher.im0xAFFE

tarvos90: sowas in der Richtung:

    let result: { label: knownDetection, newPerson: boolean } = {
        label: { known: false },
        newPerson: false,
    }

    const result = referenceFaces.reduce((prev, current) => {
        
    })
12:17:05
@tarvos90:matrix.orgtarvos90Probier ich gleich, muss erstmal essen^^12:27:22
@tarvos90:matrix.orgtarvos90mag reduce immer nicht all zu sehr wenn es nicht wirklich etwas arithmetisches ist :D TS meckert auch gerade irgendwie13:18:42
@tarvos90:matrix.orgtarvos90

so geht's lol :D

function getKnownState(
    referenceFaces: UpgradedDecetionInterface[],
    currentDetection: UpgradedDecetionInterface,
): knownStateInterface {
    // Returns true if every referenceFace in referenceFaces
    // compared to one Detection is labeled as 'unknown'.
    const isNew = referenceFaces.every(referenceFace => {
        const bestMatch = referenceFace.faceMatcher.findBestMatch(
            currentDetection.descriptor[0],
        );

        return bestMatch.label === 'unknown';
    });

    if (isNew) {
        const newDetection = {
            known: false,
        };

        return newDetection;
    }

    const bestMatchLabels = referenceFaces.map(referenceFace => {
        const bestMatch = referenceFace.faceMatcher.findBestMatch(
            currentDetection.descriptor[0],
        );

        return bestMatch.toString(false);
    });

    const bestMatchLabel = bestMatchLabels.filter(label => {
        return label !== 'unknown';
    })[0];

    const knownDetection = {
        known: true,
        label: bestMatchLabel,
    };

    return knownDetection;
}
16:20:28
@tim:schumacher.im0xAFFE

tarvos90: Würde das eher so machen:

    const bestMatchLabel = bestMatchLabels.filter(label => {
        return label !== 'unknown';
    }).shift();

Finde so Array-Access über index nicht so optimal, weil es ja nicht umbedingt gegeben sein muss das es das Element gibt.

16:23:25
@tarvos90:matrix.orgtarvos90ah danke, ja das ist besser :D16:24:00

Show newer messages


Back to Room ListRoom Version: