Skip to content

Instantly share code, notes, and snippets.

View madeindjs's full-sized avatar
🚬

Alexandre Rousseau madeindjs

🚬
View GitHub Profile
@madeindjs
madeindjs / tree.ts
Last active September 2, 2019 15:40
import assert = require("assert");
interface ISchemaTree {
id: string;
childs: ISchemaTree[];
}
class Tree {
public nodes: TreeNode[] = [];
@madeindjs
madeindjs / index.html
Created October 11, 2019 22:07
isignif mockup
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Act mockup</title>
<!-- <link rel="stylesheet" href="https://bootswatch.com/4/darkly/bootstrap.min.css"> -->
<!-- <link rel="stylesheet" href="https://bootswatch.com/4/flatly/bootstrap.min.css"> -->
@madeindjs
madeindjs / ic.js
Last active February 11, 2020 11:20
const Intercom = require('intercom-client');
const myAdminId = 3385260;
const client = new Intercom.Client({ token: '...=' });
const until = new Date(2020, 3, 15);
const conversationId = 25726415330;
client.conversations.reply({
id: conversationId,
# !/bin/bash
# concat log
touch /tmp/complete_isignif_fr_access.log
cat /var/log/apache2/isignif_fr_access*.log >> /tmp/complete_isignif_fr_access.log
gzip -d /var/log/apache2/isignif_fr_access.log.*.gz --stdout >> /tmp/complete_isignif_fr_access.log
# generate HTML report
goaccess /tmp/complete_isignif_fr_access.log -o /tmp/goaccess_report.html
class User {
public birthDate: Date;
public constructor(
public readonly firstname: string = 'Douggie',
public readonly lastname: string = 'Dougs',
) {
const birthYear = Math.floor((Math.random() * 50) + 1970)
this.birthDate = new Date(birthYear, 1, 1);
}

Les générateurs en Node.js

Récemment chez Dougs, j'ai du faire un script pour calculer les données de tous nos utilisateurs. J'ai rencontré quelques problèmes de performances liées à la quantité de données que cela représente (plusieurs milliers d'utilisateurs). J'ai réussi à régler ce problème en utilisant les générateurs qui permettent dans certains cas de réduire considérablement l'empreinte mémoire. Si ce terme ne te dis rien, je t'invite à lire la suite de cet article.

Exemple simpliste

Afin que tu saisisse le problème, je vais recréer un exemple simple. Basique.

Imagine une classe qui représente un utilisateur avec un firstname, lastname, une birthDate. Voici une implémentation en TypeScript avec un constructeur qui définit des données factices et une méthode age afin de calculer l'âge de l'utilisateur:

@madeindjs
madeindjs / mpv-musicbrainz.js
Last active August 26, 2024 09:54
mpv script to send listen to musicbrainz
var version = "1.1";
var listenbrainzToken = "your token here";// https://listenbrainz.org/profile/
mp.msg.debug("loaded");
/**
* @returns {string | undefined}
*/
function getTitle(metadata) {
if (!metadata) metadata = mp.get_property_native("metadata");
#!/bin/bash
function has() {
which "$1" >/dev/null 2>&1
}
function check_deps() {
if ! has "LAC"
then
echo "You need to install LAC https://losslessaudiochecker.com/" >&2