Juli 27, 2021

Mit Node.js gegen den Rest der Welt

Heute: easy SFTP Upload

Weiterlesen
Juni 30, 2021

Ha-GUID! Gesundheit!

GUIDs für Jedermann

Weiterlesen
Mai 3, 2021

Bruchailromantik

Bruchrechnen in JavaScript

Weiterlesen
März 12, 2021

Alle Teiler einer Zahl

Mathe in JavaScript

Weiterlesen
Cover Image

Mit Node.js gegen den Rest der Welt

Heute: easy SFTP Upload

Juli 27, 2021 - Lesezeit: 14 Minuten

Immer mal wieder hat man die Anforderung schnell mal ein paar Dateien von einem Rechner auf einen anderen zu laden. Besonders wenn dann noch das Internet beteiligt ist, ist man bestrebt das Ganze auch noch sicher ablaufen zu lassen. Damit entfällt die alte aber zuverlässige Methode des FTP. Aber dafür hat man ja SFTP. Nodejs macht es einem dann sogar recht einfach, da es bereits ein paar tolle Pakete dafür gibt. Eins davon hab ich dann heute mal eingesetzt und wieder lässt sich ein Anforderung in wenigen Zeilen elegant lösen. 

Installation

npm i sftp-upload

Danach eigentlich nur noch passend konfigurieren und fertig:

const SftpUpload = require('sftp-upload');

async function uploadFiles() {
  return new Promise((resolve=> {
    process.stdout.write('\r');
    new SftpUpload({
      host: '<HOST HERE>',
      username: '<USER HERE>',
      password: "<PASS HERE>",
      path: './',
      remoteDir: '/<DIR HERE>',
      excludedFolders: ['node_modules'],
      exclude: ['package-lock.json''package.json'],
      dryRun: false
    })
      .on('error', (err=>  {throw err;} )
      .on('uploading',  (progress=>  process.stdout.write('\r' + progress.percent + '% completed'))
      .on('completed', () => {
        process.stdout.write('\r');
        resolve();
      })
      .upload();
  });
}

(async () => {
  await uploadFiles();
  console.log("DONE");
})();

Lässt sich super für Kontinuierliche Integration einsetzen und man könnte das ganze jetzt mit dem Komprimieren passend kombinieren. Jetzt muss das Ganze nur noch zyklisch ausgeführt werden...


Cover Image

Ha-GUID! Gesundheit!

GUIDs für Jedermann

Juni 30, 2021 - Lesezeit: ~1 Minute

GUIDs sind eine tolle Möglichkeit eine Eindeutigkeit z. B. an einem Datensatz zu erzeugen. Im Gegensatz zu Zahlenindetifiaktionen sind GUIDs absolut eindeutig und übergreifend. Als Entwickler braucht man immer mal wieder eine GUID für alle möglichen Zwecke. Deshalb haben wir ein kleines Programm entwickelt, dass einfach eine GUID erzeugt und in die Zwischenablage schiebt.

GUID Generator

Kann man auch als App verknüpfen.


Cover Image

Bruchailromantik

Bruchrechnen in JavaScript

Mai 3, 2021 - Lesezeit: 41 Minuten

So, hier jetzt also ein JavaScript für Bruchrechenaufgaben. Das ist diesmal etwas größer, um der Anzeige von Bruchzahlen auch gerecht zu werden und nicht irgendeine komische Schreibweise verwenden zu müssen.

//(
var myCalcer = (NumberToUsetargetElement=> {
  // the brain -> calcing stuff
  function Fraction(zahl) {
    let numerator = 0;
    let denominator = 0;
    for (i = 1truei *= 10) {
      if ((zahl * i) == Math.floor(zahl * i)) {
        numerator = (zahl * i);
        denominator = i;
        break;
      }
    }
    return ([numeratordenominator]);
  }

  function calc_ggt(ab) {
    let h = (a > b) ? b : a;
    for (i = hi > 1i--) {
      if ((a % i) == 0 && (b % i) == 0) {
        return i;
      }
    }
    return 1;
  }
  // the eye -> formatting output
  function writeFraction(zaehlernenner) {
    let outSpan = document.createElement("SPAN");
    outSpan.setAttribute('class''frac');
    outSpan.setAttribute('style''padding-right:5px;');
    outSpan.innerHTML = `<sup>${zaehler}</sup><span>/</span><sub>${nenner}</sub>`;
    targetElement.appendChild(outSpan);
  }

  function writeOperatorOrLine(opToWrite) {
    let outSpan = document.createElement("SPAN");
    outSpan.setAttribute('style''vertical-align:14px;padding-right:5px;');
    outSpan.innerText = opToWrite;
    targetElement.appendChild(outSpan);
  }

  function addcss() {
    let styleHelper = document.createElement("style");
    styleHelper.id = 'styleHelper';
    styleHelper.innerHTML = `span.frac {
          display: inline-block;
          text-align: center;
        }

        span.frac>sup {
          display: block;
          border-bottom: 1px solid;
          font: inherit;
        }

        span.frac>span {
          display: none;
        }

        span.frac>sub {
          display: block;
          font: inherit;
        }`;
    targetElement.appendChild(styleHelper);
  }
  // the hand -> doing things
  let bruch = Fraction(NumberToUse);
  let ggt = calc_ggt(bruch[0], bruch[1]);
  addcss();
  writeOperatorOrLine(NumberToUse);
  writeOperatorOrLine("=");
  writeFraction(bruch[0], bruch[1]);
  writeOperatorOrLine(":");
  writeOperatorOrLine(ggt);
  writeOperatorOrLine("=");
  writeFraction(bruch[0] / ggtbruch[1] / ggt);
};
//)(0.45);
var inputElement = document.createElement("INPUT");
var buttonElement = document.createElement("BUTTON");
var targetOutElement = document.createElement("DIV");
buttonElement.innerHTML = "Calc";
buttonElement.onclick = () => {
  /*
  for(var mainCounter = 1; mainCounter < 100; mainCounter++ ) {
    myCalcer(
      mainCounter /
      Math.pow(10, ("" + mainCounter).length),
      targetElement
    );
    targetElement.appendChild(document.createElement("BR"));
    targetElement.appendChild(document.createElement("BR"));
  }
  */
  targetOutElement.innerHTML = "";
  let numberToUse = parseFloat(inputElement.value.replace(',''.'));
  myCalcer(numberToUsetargetOutElement);
};
targetOutElement.style.backgroundColor = "white";
targetOutElement.style.border = '1px solid black';
targetOutElement.style.borderRadius = '4px';
targetOutElement.style.padding = '10px';
targetOutElement.style.margin = 'auto';
targetOutElement.style.width = '200px';
targetOutElement.style.textAlign = 'center';
document.body.appendChild(inputElement);
document.body.appendChild(buttonElement);
document.body.appendChild(targetOutElement);

Hierbei teilt sich die Funktion myCalcer in 3 Teile. Der erste Teil sind die Berechnungsfunktionen. Der zweite Teil regelt die Ausgabe und der dritte Teil macht die Rechnung. Am Ende kommt noch ein bisschen Styling dazu, damit das auch was hermacht. Kann man direkt in der Konsole benutzen oder hier:

EOF


Cover Image

Alle Teiler einer Zahl

Mathe in JavaScript

März 12, 2021 - Lesezeit: ~1 Minute

Mal schnell alle Teiler einer Zahl zu finden erfordert nicht unbedingt ein großes Programm. Statt dessen kann man das schnell in der Konsole erledigen.

The Power of JavaScript unleashed.

Hier eine einfache schnelle Lösung, CopyUndPaste fertig:


var totest = 120; // hier einfach die Zahl einsetzen.
// ermittelt alle Teiler und gibt sie auf der Konsole aus.
for(let i = 0;i < (totest+1); i++) {
  if(totest % i === 0) {
    console.log(i);
  }
}


Hier noch ein passender Generator für irgendwelche Zahlen.


for(let j = 0;j < 100; j++) {
let teilerCount=0;
for(let i = 0;i < (j+1); i++) {
if(j % i === 0) {
teilerCount++;
}
}
if(teilerCount === 6){
console.log(j); //,teilerCount);
}

}