Launch ChatGPT = AutoHotKey

#Requires AutoHotkey v2.0

SetTitleMatchMode(2)

Run('explorer.exe shell:AppsFolder\OpenAI.Codex_2p2nqsd0c76g0!App')

if WinWait("ChatGPT",,15)
{
    WinRestore("ChatGPT")
    WinActivate("ChatGPT")
}

Launch Calculator - AutoHotKey

#Requires AutoHotkey v2.0

SetTitleMatchMode(2)

Run("C:\Windows\System32\calc.exe")

if WinWait("Calculator",, 15)
{
    WinRestore("Calculator")
    WinActivate("Calculator")
}

3345. Smallest Divisible Digit Product I

You are given two integers n and t. Return the smallest number greater than or equal to n such that the product of its digits is divisible by t.
/**
 * @param {number} n
 * @param {number} t
 * @return {number}
 */
var smallestNumber = function(n, t) {

    // Helper function to compute the product of digits of x
    function digitProduct(x) {
        let prod = 1;

        // Extract digits one by one
        while (x > 0) {
            let d = x % 10;          // get last digit
            prod *= d;               // multiply into product
            x = Math.floor(x / 10);  // remove last digit
        }

        return prod;
    }

 

Update requirements.txt based on pip freeze

# utils/update_requirements.py
# This script Update requirements.txt from the currently active Python environment

"""
Update requirements.txt from the currently active Python environment.

How to use the script?
- Copy requirments.txt from the root folder to this folder
- Run this script to update it with the currently installed packages in the active virtual environment
- Check the changes and copy it back to the root folder if you want to update the main requirements.txt file

Beha

disable global style inline

add_action('init', function () {
    remove_action('wp_enqueue_scripts', 'wp_enqueue_global_styles');
    remove_action('wp_footer', 'wp_enqueue_global_styles', 1);
    remove_action('wp_body_open', 'wp_global_styles_render_svg_filters');
});

3310. Remove Methods From Project

You are maintaining a project that has n methods numbered from 0 to n - 1. You are given two integers n and k, and a 2D integer array invocations, where invocations[i] = [ai, bi] indicates that method ai invokes method bi. There is a known bug in method k. Method k, along with any method invoked by it, either directly or indirectly, are considered suspicious and we aim to remove them. A group of methods can only be removed if no method outside the group invokes any methods within it. Return an array containing all the remaining methods after removing all the suspicious methods. You may return the answer in any order. If it is not possible to remove all the suspicious methods, none should be removed.
/**
 * @param {number} n
 * @param {number} k
 * @param {number[][]} invocations
 * @return {number[]}
 */
var remainingMethods = function(n, k, invocations) {
    const adj = Array.from({ length: n }, () => []);
    const rev = Array.from({ length: n }, () => []);

    for (const [a, b] of invocations) {
        adj[a].push(b);
        rev[b].push(a);
    }

    // Step 1: find suspicious nodes
    const suspicious = new Array(n).fill(false);
    const stack = [k];
    suspicious[k] = true;

  

qwen

sk-ws-H.DMDRYPP.vl9R.MEUCIBLPjK81_F8ggRU85KvznonJKbj1B6VbsG0WLPx5TE-xAiEAqjWvH6KJHTITicb9msrt_cXgKKwsHbYQAIBScFzN7H8

https://ws-572c0f0lftimh5ph.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1     

Svg mask - sprite via css target


<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" clip-rule="evenodd" viewBox="0 0 1920 300" preserveAspectRatio="none"><style>:is(path,g){display:none}:is(path,g):target,#image path{display:initial}</style><path id="section2-bottom" fill-rule="nonzero" d="m354 132 4 2v1l-5-1 1-2Zm-4-32v1h1v-1h-1Zm-1 8-3 2c-3 2-2 4 0 6l4-5-1-3Zm0 22h1-1Zm-3 11h1-1Zm30-10 1-1h-2l1 1Zm-14 16 1 1v-1h-1Zm12-24-1 1 1 2 1-2-1-1Zm4 6h1v-1l-1

3731. Find Missing Elements

You are given an integer array nums consisting of unique integers. Originally, nums contained every integer within a certain range. However, some integers might have gone missing from the array. The smallest and largest integers of the original range are still present in nums. Return a sorted list of all the missing integers in this range. If no integers are missing, return an empty list.
/**
 * @param {number[]} nums
 * @return {number[]}
 */
var findMissingElements = function(nums) {
    const mn = Math.min(...nums);
    const mx = Math.max(...nums);

    // Boolean presence array
    const seen = new Array(mx - mn + 1).fill(false);

    for (const num of nums) {
        seen[num - mn] = true;
    }

    const missing = [];
    for (let i = mn; i <= mx; i++) {
        if (!seen[i - mn]) missing.push(i);
    }

    return missing;
};

1406. Stone Game III

Alice and Bob continue their games with piles of stones. There are several stones arranged in a row, and each stone has an associated value which is an integer given in the array stoneValue. Alice and Bob take turns, with Alice starting first. On each player's turn, that player can take 1, 2, or 3 stones from the first remaining stones in the row. The score of each player is the sum of the values of the stones taken. The score of each player is 0 initially. The objective of the game is to end with the highest score, and the winner is the player with the highest score and there could be a tie. The game continues until all the stones have been taken. Assume Alice and Bob play optimally. Return "Alice" if Alice will win, "Bob" if Bob will win, or "Tie" if they will end the game with the same score.
/**
 * @param {number[]} stoneValue
 * @return {string}
 */
var stoneGameIII = function(stoneValue) {
    const n = stoneValue.length;

    // dp[i] = maximum score difference Alice can achieve starting at index i
    // Positive dp[i] means Alice is ahead; negative means Bob is ahead.
    const dp = new Array(n + 1).fill(0);

    // Fill dp from the back because future states depend on later indices
    for (let i = n - 1; i >= 0; i--) {
        let best = -Infinity;   // Best score difference 

đź”— DBT - dbt-utils VS dbt-expectations

# `dbt-utils` et `dbt-expectations` — fiche de comparaison

| | |
|---|---|
| **Genre** | ⚠️ **Hors corpus.** Document de travail personnel, pas un artefact de la version de vérité |
| **Pourquoi hors corpus** | Il décrit deux catalogues tiers qui évoluent indépendamment de la doctrine dbt. Le corpus ne fixe que ce que *nous* décidons ; le catalogue se lit sur GitHub |
| **Sources** | READMEs des dépôts, consultés le 3 août 2026 |
| **Versions décrites** | `dbt-utils` 1.3.3 (déc. 2025) · `dbt-ex

🔗 DBT - 03 - ECART - Marts réduits à une couche d'exposition

# Écart 03 — Les marts réduits à une couche d'exposition

| | |
|---|---|
| **Type** | Décalage de vocabulaire et d'architecture |
| **Doctrine de référence** | *Les trois couches d'un projet dbt*, §5.1 et §5.8 |
| **Statut** | À instruire |
| **Dernière révision** | Juillet 2026 |

> **En une phrase :** l'architecture est probablement correcte et seuls les noms sont faux — mais tant qu'ils le sont, la gouvernance se pose sur des projections plutôt que sur les définitions.

---

## 1. La pratiqu

🔗 DBT - 02 - ECART - Décomposition de l'intermediate en étapes techniques

# Écart 02 — Décomposition de l'intermediate en étapes techniques

| | |
|---|---|
| **Type** | Écart à un principe de découpage dbt |
| **Doctrine de référence** | *Les trois couches d'un projet dbt*, §4.4 et §6.5 |
| **Statut** | À instruire |
| **Dernière révision** | Juillet 2026 |

> **En une phrase :** dbt découpe l'intermediate selon le **concept métier préparé**, jamais selon l'**opération SQL effectuée** ; et le critère qui promeut une étape en modèle est la réutilisation, pas la nature

🔗 DBT - 01 - ECART - Ephemeral comme matérialisation au staging

# Écart 01 — `ephemeral` comme matérialisation du staging

| | |
|---|---|
| **Type** | Écart à une recommandation dbt explicite |
| **Doctrine de référence** | *Les trois couches d'un projet dbt*, §3.7 |
| **Statut** | À instruire |
| **Dernière révision** | Juillet 2026 |

> **En une phrase :** dbt recommande `view` au staging et énonce pour `ephemeral` trois conditions d'usage cumulatives dont l'une est incompatible par construction avec la fonction de la couche.

---

## 1. La pratique

La c

🔗 DBT - Semantic Layer et Modélisation Kimball

# Le dbt Semantic Layer — et pourquoi il réconcilie dbt avec Kimball

> Note de synthèse construite à partir de la documentation dbt Labs (pages *About MetricFlow*, *Joins*, *Semantic models*, *Measures*, *Creating metrics*, guide *How we build our metrics*, FAQ Semantic Layer) et de la page d'intégration Power BI. Sources consultées fin juillet 2026.

---

## 0. La réponse en cinq lignes

Le Semantic Layer déplace la définition des **métriques** hors de l'outil de BI et hors des tables figées, 

đź”— DBT - Best Practises Couches

# Les trois couches d'un projet dbt : préconisations, recommandations et interdits

> Note de synthèse construite à partir des sources primaires dbt Labs (guides *How we structure our dbt projects*, *How we style our dbt projects*, *Materialization best practices*) et du package d'audit `dbt_project_evaluator`. État des pages consultées : mise à jour juin–juillet 2026.
>
> **Révision 5** — ajouts : sélection des colonnes en staging (§3.4), `ephemeral` au staging (§3.7), critère identité/préparat