301. Remove Invalid Parentheses

Given a string s that contains parentheses and letters, remove the minimum number of invalid parentheses to make the input string valid. Return a list of unique strings that are valid with the minimum number of removals. You may return the answer in any order.
/**
 * @param {string} s
 * @return {string[]}
 */
var removeInvalidParentheses = function(s) {
    const result = [];
    const visited = new Set([s]);
    const queue = [s];

    // Checks whether a string has valid parentheses
    function isValid(str) {
        let balance = 0;

        for (const ch of str) {
            if (ch === '(') {
                balance++;
            } else if (ch === ')') {
                // More closing than opening parentheses
                if (balance === 0

Tailwind utitilies

const plugin = require('tailwindcss/plugin')

module.exports = {
  plugins: [
    plugin(({ matchUtilities }) => {
      const bleedParent = {
        DEFAULT: '50%',   // rodič = container
        '1/2': '100%',
        '1/3': '150%',
        '2/3': '75%',
        '1/4': '200%',
        '3/4': '66.6667%',
        '1/5': '250%',
      }
      const out  = (v) => `calc(${v} - 50vw)` // přetečení
      const back = (v) => `calc(50vw - ${v})` // návrat obsahu

      matchUtilities({
        'bleed-

All examples of edge bleeding / overlaping (claude)

<!DOCTYPE html>
<html lang="cs">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bleed snippet (čisté HTML + CSS)</title>

<style>
/*
  BLEED SNIPPET
  -------------
  Pravidlo: % v marginu/paddingu se počítá ze šířky OBSAHU RODIČE.
  Půlka containeru = (kolikrát se rodič vejde do containeru) / 2 * 100 %
    - rodič = container       -> 50%
    - rodič = sloupec 1/2     -> 100%
    - rodič = sloupec 1/3     -> 150%
    - r

SwiperJs + bleed edge

<!DOCTYPE html>
<html lang="cs">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Bleed slider</title>

  <script src="https://cdn.tailwindcss.com"></script>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css">
  <script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>

  <script>
    tailwind.config = {
      theme: { container: { screens: { '2xl': '800

index.html

<!--
https://play.tailwindcss.com/vibc7NWlcK
-->


<div class="max-w-2xl mx-auto bg-red-400 py-10 mb-20">
  <div class="bg-green-400 py-5 ml-[calc(50%-50vw)]">Bleed to left </div>
</div>


<div class="max-w-2xl mx-auto bg-red-400 py-10 mb-20">
  <div class="bg-green-400 py-5 mr-[calc(50%-50vw)]">Bleed to right </div>
</div>


<div class="max-w-2xl mx-auto bg-red-400 py-10 flex mb-20">
  <div class="w-1/2">AAA</div>
  <div class="w-1/2">
    <div class="bg-green-400 py-5 mr-[cal

Bleed to edge from container columns

<!--
https://play.tailwindcss.com/vibc7NWlcK
-->


<div class="max-w-2xl mx-auto bg-red-400 py-10 mb-20">
  <div class="bg-green-400 py-5 ml-[calc(50%-50vw)]">Bleed to left </div>
</div>


<div class="max-w-2xl mx-auto bg-red-400 py-10 mb-20">
  <div class="bg-green-400 py-5 mr-[calc(50%-50vw)]">Bleed to right </div>
</div>


<div class="max-w-2xl mx-auto bg-red-400 py-10 flex mb-20">
  <div class="w-1/2">AAA</div>
  <div class="w-1/2">
    <div class="bg-green-400 py-5 mr-[cal

Explanation on modules

Swissup modules are found in two places:
ci.swissuplabs (provate)
Packagisy (public)

both contain some modules. 
During installation, composer looks for the modules in two placed.
If the module is free, it should be on packagist. In such case, the client can install a module without buying swissup subscription. 
However, if the module is not included on Packagist, there will be no possibility to install it without buying Swissup subscriptions. 

It cases a problem when a module is said to be fr

🗂️ awk - Tutoriel

# awk — du copier-coller à la maîtrise

<a id="preambule"></a>
## Préambule

**Public visé.** Data engineer Python (dbt, Snowflake, DuckDB, AWS) sous Linux, shell zsh, qui lance `awk '{print $1}'` par copier-coller et veut comprendre ce qu'il exécute : extraire et recalculer des colonnes, filtrer, agréger un journal ou un CSV, produire un petit rapport. Sixième tutoriel de la série ; les expressions régulières de base sont supposées acquises (tutoriel sed).

**Versions vérifiées.** Tous les bloc

✂️ 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,