Pull to refresh
4
Робот Доставщик@MrBotikkk

Балагур.Бродячий Робот Доставщик

0,4
Rating
1
Subscribers
Send message
https://ru.wikipedia.org/wiki/Клоака
<sarcasm>
  <sarcasm>
    У змей действительно нет ног, но клоака (аналог заднего прохода) у них есть.
  </sarcasm>
</sarcasm>

Бородатый мем, головоломка или демонстрация возможности Unicode в Python 3. Если такое использовать в реальных проектах - другие разрабы сделают очень больно(ломает линтеры,отладку) Это грубое нарушение принципов читаемости кода (PEP 8).

python3 << 'EOF'
def ᅠ():
    print("Hello world!")
ᅠ()
EOF
python3 << 'EOF'
def ᅠ():
    print("Hello world!")

# Посмотрим все имена в текущей области видимости
print("dir() =", dir())

# Посмотрим настоящее имя функции
print("Настоящее имя функции =", ᅠ.__name__)
EOF

Доработанный скрипт не ищет просто “живой IP”, а выбирает стабильный CDN-IP, через который packagist.org и repo.packagist.org реально доступны.

find_working_ip.sh
#!/usr/bin/env bash
set -uo pipefail

DOMAIN="${1:-packagist.org}"
PORT="${2:-443}"
PACKAGE="${3:-monolog/monolog}"

ATTEMPTS="${ATTEMPTS:-3}"
JOBS="${JOBS:-16}"
TOP="${TOP:-3}"
CTO="${CONNECT_TIMEOUT:-3}"
MTO="${MAX_TIME:-8}"

RESOLVERS=(
    1.1.1.1 8.8.8.8 9.9.9.9
    208.67.222.222 209.244.0.3 1.0.0.1
    8.8.4.4 77.88.8.8 77.88.8.1
)

if [[ "$DOMAIN" == "repo.packagist.org" ]]; then
    TEST_PATH="/p2/$PACKAGE.json"
    MODE=repo
else
    TEST_PATH="/"
    MODE=site
fi

URL="https://$DOMAIN:$PORT$TEST_PATH"
TMP="$(mktemp -d)" || exit 1
trap 'rm -rf "$TMP"' EXIT INT TERM

echo "=== Packagist IP Benchmark ==="
echo "Domain : $DOMAIN"
echo "URL    : $URL"
echo "Tests  : ${ATTEMPTS}x"
echo "Jobs   : $JOBS"
echo

# DNS
for dns in "${RESOLVERS[@]}"; do
    dig +short A "$DOMAIN" "@$dns" 2>/dev/null |
        awk '/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/' >> "$TMP/dns" &
done
wait

sort -u "$TMP/dns" > "$TMP/ips"
mapfile -t IPS < "$TMP/ips"

echo "IP: ${#IPS[@]}"
echo

(( ${#IPS[@]} )) || exit 1

# Проверка одного IP
check_ip() {
    local ip="$1"
    local f="$TMP/${ip//./_}"
    local n metrics rc code total ok
    : > "$f"

    for ((n=1; n<=ATTEMPTS; n++)); do
        metrics="$(
            curl -sS -o /dev/null \
                -w '%{http_code}|%{time_total}' \
                --resolve "$DOMAIN:$PORT:$ip" \
                --connect-timeout "$CTO" \
                --max-time "$MTO" \
                --retry 0 \
                --proto '=https' \
                --tlsv1.2 \
                "$URL" 2>/dev/null
        )"
        rc=$?

        IFS='|' read -r code total <<< "$metrics"
        ok=0

        if (( rc == 0 )); then
            if [[ "$MODE" == "repo" ]]; then
                [[ "$code" == "200" ]] && ok=1
            else
                [[ "$code" =~ ^[23][0-9][0-9]$ ]] && ok=1
            fi
        fi

        if (( ok )); then
            awk -v x="$total" 'BEGIN{printf "%.0f\n",x*1000}' >> "$f"
        fi
    done

    local count min avg max score

    count=$(wc -l < "$f")

    if (( count )); then
        min=$(sort -n "$f" | head -1)
        max=$(sort -n "$f" | tail -1)
        avg=$(awk '{s+=$1} END{printf "%.1f",s/NR}' "$f")
    else
        min=0
        avg=0
        max=0
    fi

    if (( count == ATTEMPTS )); then
        score="$avg"
    elif (( count )); then
        score=$(awk \
            -v a="$avg" -v n="$count" -v t="$ATTEMPTS" \
            'BEGIN{printf "%.1f",a+(1-n/t)*10000}')
    else
        score=999999
    fi

    printf '%s|%s|%s|%s|%s|%s\n' \
        "$ip" "$count" "$min" "$avg" "$max" "$score" \
        >> "$TMP/results"
}

# Параллельная проверка
running=0

for ip in "${IPS[@]}"; do
    while (( running >= JOBS )); do
        wait -n 2>/dev/null || true
        ((running--))
    done

    check_ip "$ip" &
    ((running++))
done

while (( running > 0 )); do
    wait -n 2>/dev/null || true
    ((running--))
done

# Рейтинг: сначала стабильность, затем latency
sort -t'|' -k2,2nr -k6,6n "$TMP/results" > "$TMP/sorted"

echo "=== Рейтинг ==="
printf "%-18s %-7s %-10s %-10s %-10s\n" \
    "IP" "OK" "MIN" "AVG" "MAX"
echo "------------------------------------------------------------"

mapfile -t ROWS < "$TMP/sorted"

for row in "${ROWS[@]}"; do
    IFS='|' read -r ip ok min avg max score <<< "$row"

    if (( ok )); then
        printf "%-18s %s/%-4s %-10s %-10s %-10s\n" \
            "$ip" "$ok" "$ATTEMPTS" \
            "${min}ms" "${avg}ms" "${max}ms"
    else
        printf "%-18s 0/%-4s %-10s %-10s %-10s\n" \
            "$ip" "$ATTEMPTS" "-" "-" "-"
    fi
done

# /etc/hosts
echo
echo "=== /etc/hosts ==="

count=0

# Сначала только 3/3
for row in "${ROWS[@]}"; do
    IFS='|' read -r ip ok min avg max score <<< "$row"

    (( ok == ATTEMPTS )) || continue

    echo "$ip $DOMAIN"
    ((++count >= TOP)) && break
done

# Если 3/3 нет — лучшие доступные
if (( count == 0 )); then
    echo "# Нет IP с ${ATTEMPTS}/${ATTEMPTS}, лучшие доступные:"
    for row in "${ROWS[@]}"; do
        IFS='|' read -r ip ok min avg max score <<< "$row"

        (( ok )) || continue

        echo "$ip $DOMAIN"
        ((++count >= TOP)) && break
    done
fi

(( count == 0 )) && echo "# Рабочих IP не найдено"

echo
echo "Проверено: ${#IPS[@]} IP"
echo "Успешных: $(awk -F'|' '$2>0{n++} END{print n+0}' "$TMP/results")"

Для моего региона и прова:

./find_working_ip.sh packagist.org
185.59.220.199     3/3    583ms      991,3ms    1621ms
169.150.247.35     3/3    519ms      1357,0ms   1826ms
79.127.216.111     2/3    1043ms     1259,0ms   1475ms
./find_working_ip.sh repo.packagist.org
79.127.216.112     3/3    845ms      1984,7ms   3286ms
79.127.216.111     3/3    900ms      2135,7ms   4431ms

Сорри, очипятка Firefox about:preferences#dnsOverHttps https://cloudflare-dns.com/dns-query

  • Временное решение — если заблокируют и этот IP, нужно искать другой

  • Не для всех поддоменов — repo.packagist.org может резолвиться в другие IP (другой CDN-провайдер) Composer использует repo.packagist.org для загрузки пакетов

nano(mcedit) find_working_ip.sh
chmod +x find_working_ip.sh
./find_working_ip.sh packagist.org
./find_working_ip.sh repo.packagist.org
find_working_ip.sh
#!/bin/bash

DOMAIN="${1:-packagist.org}"
PORT="${2:-443}"
SCHEME="https"
PATH_TO_TEST="${3:-/}"

# Для repo.packagist.org тестируем реальный путь
if [[ "$DOMAIN" == "repo.packagist.org" ]]; then
  PATH_TO_TEST="/p2/"
fi

RESOLVERS=(
  "1.1.1.1"
  "8.8.8.8"
  "9.9.9.9"
  "208.67.222.222"
  "209.244.0.3"
  "1.0.0.1"
  "8.8.4.4"
  "77.88.8.8"
  "77.88.8.1"
)

echo "=== Ищу рабочие IP для $DOMAIN (тест: $SCHEME://$DOMAIN$PATH_TO_TEST) ==="
echo ""

# Собираем только валидные IPv4
declare -A SEEN
for res in "${RESOLVERS[@]}"; do
  # 2>/dev/null + grep = только IP
  dig +short A "$DOMAIN" @"$res" 2>/dev/null | grep -E '^([0-9]{1,3}\.){3}[0-9]{1,3}$' | while read ip; do
    echo "$ip"
  done
done | sort -u > /tmp/ips_$$.txt

IPS=()
while IFS= read -r ip; do
  IPS+=("$ip")
done < /tmp/ips_$$.txt

echo "Найдено IP: ${#IPS[@]}"
echo ""

WORKING=()
DEAD=()

for ip in "${IPS[@]}"; do
  printf "  %-18s " "$ip"
  result=$(curl -s -o /dev/null -w "%{http_code}" \
    --resolve "$DOMAIN:$PORT:$ip" \
    --connect-timeout 5 \
    --max-time 10 \
    "$SCHEME://$DOMAIN$PATH_TO_TEST" 2>/dev/null)

  # Любой HTTP-ответ (200, 301, 404, 503) = IP не заблокирован
  # 000 = таймаут/соединение сброшено = заблокирован
  if [[ "$result" != "000" ]]; then
    echo "✓ HTTP $result"
    WORKING+=("$ip")
  else
    echo "✗ заблокирован/недоступен"
    DEAD+=("$ip")
  fi
done

rm -f /tmp/ips_$$.txt

echo ""
echo "=== РАБОЧИЕ IP (не заблокированы) ==="
if [[ ${#WORKING[@]} -gt 0 ]]; then
  for ip in "${WORKING[@]}"; do
    echo "$ip $DOMAIN"
  done
  echo ""
  echo "# Добавьте в /etc/hosts:"
  for ip in "${WORKING[@]}"; do
    echo "$ip $DOMAIN"
  done
else
  echo "  Ничего не нашлось."
fi

echo ""
echo "=== МЁРТВЫЕ ==="
for ip in "${DEAD[@]}"; do
  echo "  $ip"
done
Готовые строки для /etc/hosts
79.127.216.111 packagist.org
79.127.216.112 repo.packagist.org
Есть еще 138.199.37.232 packagist.org, но в /etc/hosts для одного домена работает только первая строка.
Проверка после изменений /etc/hosts
# Очистить кэш DNS (если есть)
sudo systemd-resolve --flush-caches

# Проверить
curl -I https://packagist.org/
curl -I https://repo.packagist.org/p2/laravel/framework.json

Настройки зависят от региона и прова! Разные железки с настройкой DNS, DoT и DoH, dnsmasq и др. др. др.

Мы подробно рассмотрим подготовку окружения на Astra Linux. Добавляем репозиторий Microsoft и устанавливаем ASP.NET Core Runtime 6.0

Зачем тащить репу от MS? Почитайте официальные доки RuPost Migration Tool. Пошаговый процесс переноса почтовых ящиков из Microsoft Exchange в RuPostRuPost описан подробно в базе знаний RuPost

apt policy aspnetcore-runtime-6.0 dotnet-runtime-6.0

se 1.7
se 1.7
se 1.8
se 1.8

У меня на десктопе доступен. Провод с DNS 9.9.9.9 149.112.112.112. Firefox about:preferences#dnsOverHttps https://dns.cloudflare.com/dns-query

curl -sI https://packagist.org/ | head -1
HTTP/2 200
if curl -s --max-time 5 -o /dev/null -w '%{http_code}' https://packagist.org/ | grep -qE '^[23]'; then
    echo "Доступен"
else
    echo "Недоступен"
fi
Доступен

Давняя привычка по тестированию. Использовать snap или flatpak пакеты неудобно.

Распаковал
dpkg-deb -R brevier_0.5.4-1_amd64.deb pkg
Внес изменения
rm -f pkg/DEBIAN/md5sums
Запаковал
dpkg-deb --build --root-owner-group pkg/ brevier_0.5.4-1_amd64-new.deb

Хорошо, что можно читать через консоль brevier --ua browser brevier.md

У меня давно была мысль сделать браузер только для чтения, но сейчас в эпоху ИИ я его просто сделал.

Собрал пакет минут за 15:

dpkg-deb --info brevier_0.5.4-1_amd64.deb
 Package: brevier
 Version: 0.5.4-1
 Section: net
 Priority: optional
 Architecture: amd64
 Maintainer: gurov <lucius.gu@ya.ru>
 Depends: libgtk-4-1

Работает: http_proxy=http://127.0.0.1:18080 https_proxy=http://127.0.0.1:18080 brevier-ui https://core.telegram.org/

Почему так быстро собрал пакет:

brevier-ui brevier.md

Собрал пакет

dpkg-deb -I ./northstar_1.0.12-1+local1_amd64.deb
 Package: northstar
 Version: 1.0.12-1+local1
 Architecture: amd64
 Maintainer: Andreas Røsdal <andreas.rosdal@gmail.com>
 Installed-Size: 9428
 Depends: libavif16 (>= 1.0.4), libc6 (>= 2.38), libcairo2 (>= 1.15.8), libcurl4t64 (>= 7.86.0), libenchant-2-2 (>= 2.2.3), libfontconfig1 (>= 2.13.0), libfreetype6 (>= 2.2.1), libfribidi0 (>= 1.0.0), libglib2.0-0t64 (>= 2.79.0), libgtk-4-1 (>= 4.12.0), libharfbuzz0b (>= 7.3.0), libopusfile0 (>= 0.5), libpsl5t64 (>= 0.13.0), libsdl2-2.0-0 (>= 2.0.18), libseccomp2 (>= 1.0.1), libsqlite3-0 (>= 3.7.15), libssl3t64 (>= 3.0.0), libthai0 (>= 0.1.25), libuchardet0 (>= 0.0.1), libvorbisfile3 (>= 1.1.2), zlib1g (>= 1:1.1.4)

Лопает память нормально

Bye bye ‘полярная звезда’ sudo apt-get autoremove --purge northstar

Но гибрид работает только с ONNX‑моделями, которые AMD заранее подготовила, и официально только на Windows

https://developer.amd.com/playbooks/hermes-lemonade-server/

https://launchpad.net/~lemonade-team/+archive/ubuntu/stable

Приятный сюрприз после Windows: на Linux драйвер NPU уже есть в ядре Proxmox, никаких регистраций.

Официальный док Install NPU Drivers https://download.amd.com/opendownload/RyzenAI/Driver/RAI_1.8_Linux_NPU_XRT.zip

Из trixie-backports https://packages.debian.org/trixie-backports/linux-image-7.1.8+deb13-amd64

sudo modinfo amdxdna
sudo modinfo amdxdna

https://packages.debian.org/trixie-backports/libxrt-npu2

Автор который смог собрать KDE 6.7 под РЕД ОС 8 - в репах redos 6.4.2

И примерно в этот момент РЕД Софт выпускает собственный KDE 6.

Ну раз уж используете РЕД ОС 8(полезные команды): поиск реп в redos sudo LC_ALL=C dnf search Repositories | grep ‘: Repositories’ и все доступные группы sudo LC_ALL=C dnf group list --hidden -v

https://mirror.yandex.ru/redos/8.0/x86_64/extras/kde6/plasma-desktop-6.4.2-3.red80.x86_64.rpm 2026-03-18 08:29:33 публиковали пакеты немного раньше

Это виртуалка-заготовка для отработки Autounattend.xml. С обновами, Windows Security platform, Microsoft Defender Antivirus, WebView2 Runtime в простое будет 2.5 - 3gb. Для офисной работы нужно минимум 8gb(Microsoft Office, веб-браузер)

26100.1.240331-1435.ge_release_CLIENT_IOT_LTSC_EVAL_x64FRE_en-us.iso через evalpatch и нет проблем. IoTEnterpriseS и csvlk-pack в C:\Windows\System32\spp\tokens\skus.

Linux Guest: исправлена ​​сборка для ядра Linux версии 6.12.103

Есть такое
Есть такое

насколько прекрасен azure devops например

Chief Technology Officer, Deputy CISO, and Technical Fellow, Microsoft Azure Mark Russinovich - Sysinternals

Безопасная чистилка не только Temp: https://github.com/bleachbit/bleachbit/releases/tag/v6.0.4 Есть и BleachBit-6.0.4-portable.zip. Пользуюсь уже даже забыл сколько - лет 10 похоже(Linux, Windows)

Давать тех. советы не буду. Как вариант: В Proxmox VE(Debian 13) Ceph уже встроен и готов к работе “из коробки” Пакеты пилят и обновляют активно. http://download.proxmox.com/debian/ceph-squid/dists/trixie/no-subscription/binary-amd64/

И вариант развертывания: Ceph 3-node cluster on Debian 13 (cephadm) с Proxmox VE

Proxmox VE можно запустить в vm c (nested virtualization) - потестировать

Реально уже утомили сливы кармы. Весь этот функционал - виджет погоды и др. реклама зависят от региона:

geo_US.reg

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\International\Geo]
"Nation"="244"
"Name"="US"

geo_RU.reg

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\International\Geo]
"Nation"="203"
"Name"="RU"
1
23 ...

Information

Rating
2,385-th
Registered
Activity

Specialization

Сетевой инженер, Балагур