CSS if

<!--
https://jsbin.com/kiliyineca/2/edit?html,css,output
-->



<!--  /// 1 /// -->	

<!-- .btn -->
<div class="btn" style="--status: success">Success</div>
<div class="btn" style="--status: danger">Danger</div>
<div class="btn" style="--status: warning">Warning</div>	
<div class="btn">Else</div>	
	
<!-- .cover -->	
<div class="cover" style="--priority: medium;">Iam Cover</div>
	
	
<!-- .container -->	
<div class="container">Container</div>
	
	
	
<!--  /// 2 /// -->	


3227. Vowels Game in a String

Alice and Bob are playing a game on a string. You are given a string s, Alice and Bob will take turns playing the following game where Alice starts first: On Alice's turn, she has to remove any non-empty substring from s that contains an odd number of vowels. On Bob's turn, he has to remove any non-empty substring from s that contains an even number of vowels. The first player who cannot make a move on their turn loses the game. We assume that both Alice and Bob play optimally. Return true if Alice wins the game, and false otherwise. The English vowels are: a, e, i, o, and u.
/**
 * @param {string} s
 * @return {boolean}
 */
var doesAliceWin = function(s) {
    // Define a set containing all lowercase English vowels
    const vowels = new Set(['a', 'e', 'i', 'o', 'u']);
    let prefixParity = new Set();
    // Initialize a counter to track the number of vowels in the string
    let count = 0;

    // Add initial parity (empty prefix)
    prefixParity.add(0);

    // Loop through each character in the string
    for (let char of s) {
        // If the character is a v

Renewing Let's Encrypt Certificates


# Renewing Let's Encrypt Certificates with Certbot

This guide explains how to list, delete, renew, and verify Let's Encrypt certificates on an OpenWISP setup using **Certbot** and the **webroot authenticator**.

---

## 1. List Existing Certificates

To check which certificates are currently installed:

```bash
certbot certificates
```

---

## 2. Delete Existing Certificates (Optional)

If you want to force a complete re-issuance, you can delete existing certificates before renewal.

### Meth

產生一組 256-bit 隨機金鑰並以 Base64 編碼

$bytes = New-Object byte[] 32  # 256 bits = 32 bytes
[System.Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($bytes)
$key = [Convert]::ToBase64String($bytes)
$key

webGLでFluid

<canvas class="canvas"></canvas>

webGLでripple(canvas要素バージョン)

<canvas class="water"></canvas>

webGLスクラッチサンプルから波紋(WIP)(既に生成された波紋の内側に新たな波紋が生成されない)

<div>
  <span>進捗率</span>
  <span class="progress"></span>
</div>
<div>
  <span>マウス座標</span>
  <span class="mousePosition"></span>
</div>
<button class="trigger">スタート</button>
<canvas id="canvas"></canvas>

Epicor App Studio - Receive Launch Options

%session.context.initialValueIn.ValueIn%

Epicor App Studio - Launch Options

{
	"options": {
		"valueIn": "{KeyFields.QuoteNum}"
	}
}

🐧 Bash - type -a VS command -v

# Guide complet : `type -a` vs `command -v`

## Comparaison rapide

| **Aspect** | **`command -v`** | **`type -a`** |
|------------|------------------|---------------|
| **Usage principal** | Vérifier l'existence | Debug et investigation |
| **Montre le type** | Non | Oui ("is a function", "is aliased") |
| **Montre tous les emplacements** | Non (premier seulement) | Oui (tous) |
| **Montre le code des fonctions** | Non | Oui |
| **Montre la définition des alias** | Basique | Détaillée

🐧 Bash - Which VS command -v

# Comparaison `which` vs `command -v`

## Résumé rapide

**Utilise toujours `command -v`** dans les scripts modernes. C'est le standard POSIX, plus fiable et plus rapide.

## Tableau comparatif

| **Aspect** | **`which`** | **`command -v`** |
|------------|-------------|------------------|
| **Standard POSIX** | ❌ Non | ✅ Oui |
| **Type** | Commande externe (`/usr/bin/which`) | Builtin shell |
| **Performance** | Lent (processus externe) | Rapide (builtin) |
| **Détecte les alias** 

C1 U3

E
MAKE THESE SENTENCES INTO THE FUTURE PERFECT CONTINUOUS TENSE  
1. By the time they finally diagnose my condition, I will have been suffering from it for over half of my adult life! 
2. She will have been working on the maternity ward for over twenty years by this time next summer.  
3. This time tomorrow, we will have been listening to the guest speaker at the meditation retreat for an hour.  
4. By the time the dentist finally looks at my son’s tooth it will have been aching for over a 

hoverのborder /outline 別レイアウトシフト発生する / しない

<!-- borderの場合、内側の要素にレイアウトシフトが発生 -->
<ul class="list">
  <li class="item -border">1</li>
  <li class="item -border">2</li>
  <li class="item -border">3</li>
</ul>
<!-- outlineの場合、内側の要素にレイアウトシフトは発生しない -->
<ul class="list">
  <li class="item -outline">1</li>
  <li class="item -outline">2</li>
  <li class="item -outline">3</li>
</ul>

【UIパーツ】テキストボックス (TailwindCSS必須)

# 特徴

- フォーカスしたときの見た目が綺麗
- 「必須」ラベル対応
- 補足事項を書ける部分あり
- エラー表示もあり

# 使い方

## TailwindCSS の読み込み

簡易的にやるならCDNで読み込む。他の方法は別の記事を参照。

```html
<script src="https://cdn.tailwindcss.com"></script>
```

## HTML部分

```html
<div>
  <label for="acf-field_store_name" class="block text-sm font-medium text-gray-700 mb-1">
    名前
    <span class="text-xs font-medium text-red-600 bg-red-50 px-1 py-0.5 rounded">必須</span>
  </label>
  <div>
    <input
      type="text"
      id="field_name"

【UIパーツ】送信ボタン (TailwindCSS必須)

# 特徴

- フォーム2重送信防止
- 「処理中...」のアニメーション
- 複数ボタンにも対応
- ボタンの文字選択防止
- スマホで「transition-colors」がうまく動かない現象に対応

# 使い方

## TailwindCSS の読み込み

簡易的にやるならCDNで読み込む。他の方法は別の記事を参照。

```html
<script src="https://cdn.tailwindcss.com"></script>
```

## HTML部分

```html
<button 
  type="submit" 
  data-submit-btn 
  data-loading-text="ログイン中..." 
  class="w-full bg-blue-500 text-white py-2 px-4 rounded-md hover:bg-blue-600 focus:outline-none focus:ring-2 focus:ring-blue-200 disabled:bg-gray-400

WEB BUNDLER PARA ARRANCAR REACT

![](https://cdn.cacher.io/attachments/u/3odyl3wa9rw85/DfHdek8V0xT84IykwaRFhuZ6r7KyAU3d/r4u3dlqg3.png)
mkdir react-projects
cd react-projects
npm create vite@latest my-react-app -- --template react
npm install
npm run dev