You need all days of a certain month then you can use this function:
getDaysInMonth = (month,year) => new Date(year, month, 0).getDate();
console.log( […Array(getDaysInMonth(3, 2022)).keys()] );
Greets!
You need all days of a certain month then you can use this function:
getDaysInMonth = (month,year) => new Date(year, month, 0).getDate();
console.log( […Array(getDaysInMonth(3, 2022)).keys()] );
Greets!
Bei einem aktuellen Projekt bin ich auf ein außergewöhnliches deployment gestoßen. Außergewöhnlich aber nicht negativ wertend gemeint. Halt nicht “state of the art”. Stack: Amazon EC2 Server mit einem NGINX Webserver. Der Ablauf ist wie folgt. Der Order html unter dem Pfad /usr/share/nginx/html war ein Symlink auf ein Verzeichnis im selben Pfad. Nennen wir den Ordner usr/share/nginx/kundenwebsite-2022-01-11 .
Ich nahm an das der frühere Entwickler von seiner lokalen Machine die Dateien via scp hochgespielt hatte und dann den Symlink angepasst hat. Kann man machen aber ich finde das birgt eine Menge an Risikopotenzial. Außerdem kommt man eher selten in die Verlegenheit Symlinks selber zu setzen. Heißt man muss sich immer wieder einlesen. Aus diesem Grund schreibe ich diesen Artikel. Es soll ein kleines How To Symlink sein.
Ein Symlink wird gesetzt mit: ln -s /absoluter/pfad/zum/ziel /absoluter/pfad/der/verknüpfung
Im Kontext zum obigen Beispiel beduetet es: ln -s usr/share/nginx/kundenwebsite-2022-01-11 usr/share/nginx/html
Erklärung: Wer jetzt auf usr/share/nginx/ ein ls -la macht wird folgende Ausgabe erhalten: html -> kundenwebsite-2022-01-11
drwxr-xr-x 1 nginx nginx 50 26. Jan 11:22 html -> kundenwebsite-2022-01-11
drwxr-xr-x 5 nginx nginx 4096 31. Aug 2021 kundenwebsite-2022-01-11
Heißt das der Symlink erfolgreich gesetzt ist und html eine Referenz auf den kundenwebsite-2022-01-11 Ordner enthält.
Wenn man nun ein Feature eingebaut hat und es im März auf den sever schiebt, passt man den Symlink wie folgt an:
ln -sfn $PWD/kundenwebsite-2022-03-01 $PWD/html
Somit wird die alte Referenez überschrieben.
Wenn man dann die Schnauze voll hat von so einem Deployment löscht man den Symlink ganz easy mit: rm $PWD/html .
Bemerkung: $PWD gibt der den aktuellen Standpunkt deines aufenhalts im Verzeichnissystem wieder. Also achte beim ausführen mit der Systemvariable $PWD wo du gerade bist. Du musst in unserem beispiel hier sein: ln -sfn $PWD/src2/ $PWD/target/Daten.
Hoffe es hat geholfen das Wissen über Symlinks etwas aufzufrischen?
Es kommt schon mal vor das man geschachtelte arrays bekommt.
Zum Beispiel: Man möchte aus einem geschachteltem Array alle Werte in einem Array sammeln. Mit der array Funktion flat() ist das kein Problem.
const arr1 = [1, 2, [3, 4]];
arr1.flat();
// [1, 2, 3, 4]
Auch mehrstuffig verschachtelte Arrays kann man geradeziehen (flatten). Indem man der flat Funktion die Anzahl der verschachtelungen die aufgelöst werden sollen, mitgibt. Da man ansonsten in seinem result array die oberen verschachtelung mitgelistet bekommt.
var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]
var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]
Ein einfaches besipiel um JS bind() function zu verdeutlichen:
const a = {
foo: 1,
bar() {
return this.foo + 1
},
lol: {}
}
const b = {
foo: 21,
}
a.lol.baz = (function() {
return this.foo
}).bind(b);
console.log(a.lol.baz());
Als Fullstack oder Frontendentwickler benötigt man heute eigentlich immer
NodeJS. Zumindest bei einem modernen Stack. Um zum Beispiel JS, CSS Dateien zu kompilieren oder in verschiedene Packages zu bündeln um es dann in das Projekt zu laden. Oder seine lokale Entwicklungsumgebung mit nützlichen Tools zu bereichern wie zum Beispiel Linter, Typescript.
Wenn man mehrer verschiedene Projekte hat, dann kann es sehr schnell vorkommen das man diese unagenehmen roten Error Meldungen von NPM erhält wenn man zum Beispiel ein npm script (npm run dev, nem run watch, etc.) startet.
Meiner Erfahrung nach sollte man immer zuerst die Nodeversion checken. Den Node verändert sich regelmäßig. Man kann sich natürlich Docker hier zu nutze
machen. Also einen node Docker Container der genau die Noderversion bereithält die man für das Projekt benötigt. Man kann aber auch lokal node installieren.
Aber das würde ich nicht nativ machen sondern ein nützliches Tool nutzen. Ich
spreche von NVM. NVM steht wohl für NodeVersionManager. Hier kann man leicht
zwischen den Node Versionen wechseln. Man installiert auch sehr leicht mit nvm eine neue Version.
Meiner Meinung nach ein wirklich gutes und nützliches Tool für alle die
Frontendarbeiten erledigen müssen.
Q: https://github.com/nvm-sh/nvm#manual-install
Take a look to this pattern and you will understand how it works. Assign your container position: relative;. There child assign position:absolute;. The absolute elements you can positioning by using top, bottom, left, right.
body {
background: gray;
}
.container {
position: relative;
width: 50%;
height: 100vh;
border: 3px solid #73AD21;
margin: 0px auto;
text-align:center;
}
.container div {
padding: 10px;
}
.container div:nth-child(1) {
background: yellow;
position: absolute;
width: 200px;
height: 200px;
top: 50%;
left: 20%;
}
.container div:nth-child(2) {
background: green;
position: absolute;
width: 100px;
height: 100px;
top: 20%;
right: 20%;
}
.container div:nth-child(3) {
background: red;
position: absolute;
width: 50px;
height: 50px;
top: 10px;
right: 10px;
}
.container div:nth-child(4) {
background: yellowgreen;
position: absolute;
width: 300px;
height: 30px;
top: 10px;
left: -20px;
}
<div class="container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>FLAG</div>
</div>
InnoDB setzt man ein um schnell Daten auszulesen. SELECT Anfragen werden hier schnell ausgeführt. MyISAM hingegen ist bei SELECT anfragen etwas langsamer aber dafür bei INSERT und UPDATE Anfragen schnell wie der Blitz. Daher kommt es häufig vor, dass man in einer Datenbank beide Formate vortrifft. Ich habe ein Projekt bei dem ich die Pageviews / Impressions tracke. Hier schreibe ich die Views in eine MyISAM Datenbank. Die Models der einzelnen Seiten speicher ich dagegen in eine InnoDB. Weil ich sie schnell ausgeliefert haben möchte.
Jetzt komme ich aber zu einem kritischen Punkt der genaue beide Vorteile der beiden Engines benötigt. Eine Volltextsuche. MyISAM hat hier die Nase vorne. Sie bietet eine integrierte Voltextsuche an. Sie ist aber langsamer beim ausliefern. Hier wäre eine Hybridengine wünschenswert.
Bei kleinen Anwednungen mag das nichts ins gewicht fallen aber bei größeren schon. Vor allem bei XHR Suggestion Anfragen. Und hier kommen dann SearchEngines wie Solr oder ElasticSearch ins Spiel. Was den Wartungsaufwand um einiges erhöht. Aber so ist es halt.
Ab und an braucht man das und nicht nur in der Kombinatorik.
function fac(n) {
return Array.from({length: n}).map((_,i) => i+1).reduce((a,b) => a * b, 1);
}
fac(4)
// 4 * 3 * 2 * 1 = 24
Wer es etwas übersichtlicher braucht (und dazu zähle ich mich auch) kann es auch in einer for schleife machen.
function fac(n) { r = []; for (let i = n; i > 0; --i) { r.push(i) } return r.reduce((a,b) => a * b, 1);; } console.log( makeArr(4) );
“Promisification” ist ein lange Wort für eine ganz simple Sache. Es geht eigentlich um die immer gleiche Frage, sobald man das erste Mal in JS eine API Anfrage stellt. Wie krieg ich das Zeug in den globalen Scope?
Man bedient sich ganz einfach damit, die asynchronität zu stoppen und mal ein päuschen einzulegen. Sobald dann Daten da sind werden sie mit return an eine wartende Variable zugewiesen. Wie geht den das? Man wrapped die ganze Anfrage mit einem Promise Objekt. Bei erhalt der Daten übergibt man die erhaltenden Daten in ein resolve()oder reject(). Sobald das passiert ist der Promise aufgelösst. Solange ist er sonst im pending Modus.
Hier ein kleines Besipiel:
const api = "https://api.coingecko.com/api/v3/simple/price?ids=Bitcoin%2Cdai%2Csolana&vs_currencies=usd&include_market_cap=true&include_24hr_vol=true";
const obj = await new Promise((resolve, reject) => fetch(api)
.then(res => res.json())
.then(data => resolve(data))
.catch(err => reject(err))
);
console.log('OBJ',obj)
Nein! Es ist ein absolutes Antipattern! https://stackoverflow.com/questions/23803743/what-is-the-explicit-promise-construction-antipattern-and-how-do-i-avoid-it
Möchte man über die Commandline aus einer odt Datei eine PDF machen, brinbt libre Office von Hause auch gleich ein Headless Tool mit.
libreoffice --headless --convert-to pdf textdatei.odt
und schubdiwup, da ist das neue PDF.
Martin109 Artikel