<?php
class Database
{
private static $instance = null;
private $host = "localhost";
private $db = "website";
private $user = "dbuser";
private $pass = "dbpass";
private $charset = "utf8mb4";
private function __construct(){}
public static function getConnection()
{
if (self::$instance === null) {
$db = new self();
$dsn = "mysql:host={$db->host};dbname={$db->db};charset={$db->charset}";
$options = [
<?php
function getClientIpAddress() {
$ipAddress = '';
// Check for the most common proxy header X-Forwarded-For
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ipAddressList = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
// The first IP in the list is the most likely client IP
foreach ($ipAddressList as $ip) {
if (!empty($ip)) {
// Trim any whitespace
$ipAddress = trim($ip);
break;
}
/**
* @param {string} s
* @return {boolean}
*/
var checkOnesSegment = function(s) {
// This flag will turn true once we hit the first '0'
// after the initial block of ones.
let seenZero = false;
// Loop through each character in the string
for (let char of s) {
if (char === '0') {
// We've reached the end of the ones segment
seenZero = true;
} else {
// char === '1'
// If we've already seen a zero and now document.addEventListener("click", (event) => {
const link = event.target.closest("a");
const href = link?.getAttribute("href");
// trigger on click of ANY element type that has this class (even if not a link)
let shouldIntercept = event.target.closest(".trigger-popup") !== null;
if (!shouldIntercept && href) {
if (href === "#") {
shouldIntercept = true;
} else {
try {
const { pathname } = new URL(href, window.location.href);
// trigger on `/contacfrom difflib import SequenceMatcher
def similitud(a, b):
return SequenceMatcher(None, a, b).ratio()bun run test -- --testPathPattern=InteracActivityBottomSheet/InteracActivityBottomSheetHeader/InteracActivityBottomSheetHeader.test.tsx/**
* @param {string} s
* @return {number}
*/
var minOperations = function(s) {
// cost0 = number of flips needed if we force pattern "010101..."
// cost1 = number of flips needed if we force pattern "101010..."
let cost0 = 0;
let cost1 = 0;
for (let i = 0; i < s.length; i++) {
// For pattern starting with '0':
// even index → '0', odd index → '1'
const expected0 = (i % 2 === 0) ? '0' : '1';
// For pattern starting with '1':
// evevcp_0OQ4leD3wHpMKNfDutUZvYcxo70xnMzQoWQy2WflVhfD0YJMgr2S8WbNjavascript:(async () => {while (true) {let prevHeight = document.body.scrollHeight;window.scrollTo(0, prevHeight);await new Promise(resolve => setTimeout(resolve, 1000));if (document.body.scrollHeight === prevHeight) break;}console.log('All tweets loaded');})();# Pie it`s mopdern PHP PECL packages installer. Use Pie insted PECL!
`sudo apt install php8.5-dev` (for install PECL extension) \
`wget https://github.com/php/pie/releases/latest/download/pie.phar` \
`mv ./pie.phar /usr/local/bin/pie` \
`chmod +x /usr/local/bin/pie` \
`pie completion >> ~/.zshrc` \
`pie completion >> ~/.bashrc` \
`source ~/.zshrc` or `source ~/.bashrc`
After that: \
`pie install ...` \
e.g. \
`pie install pecl/timezonedb` \al-sZBPOahv-DYwSnVqHOPTjuJxKu90V_4dA69FNh8GQwN# Les liens symboliques (symlinks) en Unix
## Anatomie d'un fichier Unix
Sur un système de fichiers Unix, un fichier a deux composants distincts :
- Le **contenu** — les données, stockées quelque part sur le disque
- Le **nom** — l'entrée dans un dossier qui pointe vers ce contenu
---
## Ce qu'est un symlink
Un lien symbolique est un fichier spécial dont le contenu n'est pas de la donnée, mais **un chemin vers un autre fichier**. C'est un pointeur, une flèche.
```
~/.zshrc → ~/dotfiles/z# Diagnostic en cas de panne — Linux / Crostini
## Les trois questions à se poser
1. **Qu'est-ce qui a échoué ?** — identifier le composant fautif
2. **Quand et pourquoi ?** — lire les logs
3. **Est-ce reproductible ?** — tester après correction
---
## Les codes de sortie
Toute commande Unix retourne un code de sortie entre 0 et 255 :
| Valeur | Signification |
|---|---|
| `0` | Succès |
| toute autre valeur | Échec |
```bash
echo $? # code de sortie de la dernière commande
```
---
## Gestion des processus Linux
## Qu'est-ce qu'un processus ?
Un processus est une instance d'un programme en cours d'exécution. Chaque processus possède :
| Attribut | Description |
|---|---|
| **PID** | *Process ID* — identifiant numérique unique |
| **PPID** | *Parent PID* — PID du processus qui l'a créé |
| **Propriétaire** | L'utilisateur qui l'a lancé |
| **État** | En cours d'exécution, en attente, suspendu... |
---
## Lister les processus : `ps`
```bash
ps aux
```
| Option | Signif@formkit/auto-animate: https://auto-animate.formkit.com/# btop — Guide de référence rapide
## Lancement
```bash
btop
```
---
## Interface
L'écran est divisé en panneaux :
| Panneau | Contenu |
|---|---|
| **CPU** | Utilisation par cœur + historique graphique |
| **Mémoire** | RAM + swap + historique graphique |
| **Réseau** | Débit entrant/sortant en temps réel |
| **Disque** | Activité I/O par partition |
| **Processus** | Liste triable, filtrable, avec CPU/mémoire |
> La souris est supportée — clic direct sur les éléments de l'interface.
--