✂️ sed - Tutoriel

# sed : éditer du texte en flux

## Préambule

**Public visé.** Data engineer à l'aise dans un terminal, qui utilise `sed` par copier-coller de `s/a/b/g` et veut comprendre ce qu'il lance : nettoyer un CSV ou un journal, modifier un fichier de configuration, renommer une référence dans cinquante modèles SQL. Aucune connaissance préalable de `sed` ; les expressions régulières de base (`.`, `*`, `[…]`, `^`, `$`) sont supposées connues.

**Versions vérifiées**, le 6 octobre 2026, sous Linux x86_64 

🦆 duckdb - 2 - Embarqué: Python et dbt

# DuckDB embarqué : Python et dbt

Document 2/2. Présuppose « DuckDB : CLI et SQL » (document 1) : modèle mental, lecture et écriture de fichiers, dialecte, extensions, verrou.

## Préambule

**Public visé.** Data engineer Python (uv, dbt, Snowflake, AWS) qui a lu le document 1 et veut utiliser DuckDB depuis du code Python, puis comme cible dbt locale à côté d'un entrepôt Snowflake.

**Versions vérifiées**, le 5 octobre 2026, sous Linux x86_64 et Python 3.13 :

| Composant | Version |
|---|---|

🦆 duckdb - 1 - CLI et SQL

# DuckDB : CLI et SQL

Document 1/2. Le document 2, « DuckDB embarqué : Python et dbt », présuppose celui-ci.

## Préambule

**Public visé.** Data engineer Python (uv, dbt, Snowflake, AWS) qui veut DuckDB en local pour explorer des fichiers, tester du SQL analytique et, plus tard, servir de cible dbt. Aucune connaissance préalable de DuckDB ; SQL analytique supposé acquis.

**Version vérifiée.** DuckDB **1.5.6** (CLI, Linux x86_64), le 5 octobre 2026. La branche 1.4 est la LTS. Les fonctionnalit

🍪 cookiecutter - CONCEPTEUR

# Cookiecutter côté concepteur

> Guide progressif pour **écrire, tester, distribuer et faire vivre** un template cookiecutter. Il suppose que vous savez générer un projet depuis un template (guide compagnon *Cookiecutter côté utilisateur, et cruft pour la suite*). Convention : un bloc de code est une séquence à exécuter telle quelle ; les alternatives sont dans des blocs séparés, chacun précédé de son cas d'usage. Vérifié contre la documentation de cookiecutter 2.7 et de cruft 2.15.

---

## So

restrict add/change user permissions in djang admin to non-admin users

# This is the portable version 
# It provides three separate layers of protection:
# 1. get_queryset() — hides staff/superusers.
# 2. has_change_permission() — blocks editing them even through a direct URL.
# 3. get_fieldsets() — hides is_staff and is_superuser when adding/editing users.
# Important: 
# If the other project's CustomUserAdmin already overrides get_queryset(), has_change_permission(), or get_fieldsets(), 
# don't add a second method with the same name. The security logic ne

🍪 cookiecutter - UTILISATEUR & cruft

# Cookiecutter côté utilisateur, et cruft pour la suite

> Guide progressif pour **générer** un projet depuis un template cookiecutter, puis le **maintenir** à jour avec cruft quand le template évolue. Il ne traite pas de l'écriture de templates : c'est l'objet du guide compagnon *Cookiecutter côté concepteur*. Convention : un bloc de code est une séquence à exécuter telle quelle ; les alternatives sont dans des blocs séparés, chacun précédé de son cas d'usage. Vérifié contre cookiecutter 2.7 et

{} jq - tutoriel complet

# jq : tutoriel synthétique

> Guide progressif pour maîtriser `jq`, de la première extraction au traitement de fichiers volumineux en passant par l'écriture de filtres réutilisables. Même construction que les guides précédents : **un bloc de code est une séquence à exécuter telle quelle**, chaque alternative a son bloc et son cas d'usage, chaque exemple montre sa sortie quand elle n'est pas évidente. Les exemples visent jq ≥ 1.7 ; les différences avec 1.6 sont signalées. Vérifiez avec `jq --ver

Google Apps script

var Sheet_ID = '1uKyjCIINSL8F9WeoaxZ8pBByR15F22Ep07vri-Bf9iY';
var Sheet_Name = 'All SN list';

function doGet(e){
  return HtmlService.createTemplateFromFile('Index').evaluate().setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}

function submitData(obj){
  var ws = SpreadsheetApp.openById(Sheet_ID);
  var ss = ws.getSheetByName(Sheet_Name);
  var data = "";
  var flag = false;

  // // Fetch all data at once
  // var dataRange = ss.getRange(2, 1, ss.getLastRow() - 1,

Blinkbid — Bidding & Production Management Software

[Blinkbid](https://blinkbid.com/) — bidding & production management software for creative professionals (photographers, producers, filmmakers): quotes, production, invoices & payments.
// Blinkbid — bidding & production management software for creative professionals
// (photographers, producers, filmmakers): quotes, production, invoices & payments.
// Website: https://blinkbid.com/

Dritto Salon – Keratin Specialists | San Francisco & San Rafael

# Dritto Salon

Dritto Salon is a top-rated beauty salon in San Francisco and San Rafael, California. They specialize in keratin hair treatments, hair extensions, and premium hair care services.

Visit [Dritto Salon](https://www.drittosalon.com/) to learn more and book your appointment.

856. Score of Parentheses

Given a balanced parentheses string s, return the score of the string. The score of a balanced parentheses string is based on the following rule: "()" has score 1. AB has score A + B, where A and B are balanced parentheses strings. (A) has score 2 * A, where A is a balanced parentheses string.
/**
 * @param {string} s
 * @return {number}
 */
var scoreOfParentheses = function(s) {
    const stack = [];
    let score = 0;

    for (const ch of s) {
        if (ch === '(') {
            // Save current level's score
            stack.push(score);

            // Start a new inner level
            score = 0;
        } else {
            // If score is 0, we found "()"
            // Otherwise, we found "(A)" => 2 * A
            const innerScore = score === 0 ? 1 : score * 2;

          

678. Valid Parenthesis String

Given a string s containing only three types of characters: '(', ')' and '*', return true if s is valid. The following rules define a valid string: Any left parenthesis '(' must have a corresponding right parenthesis ')'. Any right parenthesis ')' must have a corresponding left parenthesis '('. Left parenthesis '(' must go before the corresponding right parenthesis ')'. '*' could be treated as a single right parenthesis ')' or a single left parenthesis '(' or an empty string "".
/**
 * @param {string} s
 * @return {boolean}
 */
var /**
 * @param {string} s
 * @return {boolean}
 */
var checkValidString = function(s) {
    // Range of possible unmatched '(' counts.
    // low  = minimum opens we could have
    // high = maximum opens we could have
    let low = 0;
    let high = 0;

    for (const ch of s) {
        if (ch === '(') {
            low++;
            high++;
        } else if (ch === ')') {
            low--;
            high--;
        } else { // '*'
     

☀️ uv - Tutoriel Complet

# uv : tutoriel synthétique

> Guide progressif pour maîtriser `uv`, le gestionnaire Python d'Astral. Même construction que les guides pytest et Ruff : des niveaux qui s'enchaînent, des commandes à essayer, des recettes, un aide-mémoire et un quiz. Les commandes sont valables pour uv ≥ 0.5 ; vérifiez avec `uv --version`.

---

## Sommaire

0. [Ce qu'est uv](#0-ce-quest-uv)
1. [Niveau 1 — Installation et principes](#1-niveau-1--installation-et-principes)
2. [Niveau 2 — Gérer les versions de Pytho

🧹 ruff - tutoriel complet

# Ruff : tutoriel synthétique

> Guide progressif pour prendre en main `ruff`, du premier lancement à une configuration de projet maintenue. Même esprit que le guide pytest : chaque niveau s'appuie sur le précédent, et les commandes sont faites pour être essayées au fur et à mesure.

---

## Sommaire

0. [Ce qu'est Ruff](#0-ce-quest-ruff)
1. [Niveau 1 — Premier lancement et lecture de la sortie](#1-niveau-1--premier-lancement-et-lecture-de-la-sortie)
2. [Niveau 2 — Corriger automatiquement](#2-n

🐍 🧪 pytest - maîtriser l'output

# Maîtriser la sortie de `pytest`

> Guide progressif pour régler ce que pytest affiche, du premier `pytest` lancé jusqu'à une configuration de projet stable. Chaque niveau s'appuie sur le précédent. Les commandes sont à tester au fur et à mesure sur un vrai projet : c'est en voyant la sortie changer qu'on retient.

---

## Sommaire

0. [Lire une sortie pytest](#0-lire-une-sortie-pytest)
1. [Niveau 1 — Verbosité : `-v`, `-q`](#1-niveau-1--verbosité)
2. [Niveau 2 — Le résumé final : `-r`](#2-nive

32. Longest Valid Parentheses

Given a string containing just the characters '(' and ')', return the length of the longest valid (well-formed) parentheses substring.
/**
 * @param {string} s
 * @return {number}
 */
var longestValidParentheses = function(s) {
    // Store indices. Start with -1 as a base for valid substrings.
    let stack = [-1];
    let maxLen = 0;

    for (let i = 0; i < s.length; i++) {
        if (s[i] === '(') {
            // Save the index of each opening parenthesis.
            stack.push(i);
        } else {
            // Try to match the current ')'.
            stack.pop();

            if (stack.length === 0) {