arch linux

btrfs лучше ext4 Так как снимки моментальнеые Запись в rufus-4.1p.exe Выбираем DD Запись для линукса Для вайфай iwctl device list station wlan0 scan station wlan0 get-networks station wlan0 connect НазваниеСети Пароль вифи exit ping -c2 archlinux.org archinstall budgie Nvidia propri multilib // Это чтоб 32 битные шли на 64 Игровое ядро sudo pacman -S linux-zen sudo pacman -S linux-lts sudo mkinitcpio -p linux-lts // Выбор ядра по умолчанию sudo bootctl update // Для systemd-boot выбрать ядро в ручную sudo nano /boot/loader/entries/3434.conf sudo pacman -Syu // Обновить систему Установка sudo pacman -S mc nano htop wget bash-completion unzip zip firefox chromium neofetch wireguard-tools telegram-desktop notepadqq kate flameshot vlc ktorrent discord krita net-tools nvidia-settings ntfs-3g exfat-utils gwenview micro baobab partitionmanager dosfstools sudo pacman -Syu partitionmanager Сравнение файлов sudo pacman -Syu sudo pacman -S meld filelight timeshift sudo pacman -S flatpak flatpak install flathub com.visualstudio.code -y && flatpak install flathub com.brave.Browser -y && flatpak install flathub org.onlyoffice.desktopeditors -y && flatpak install flathub org.videolan.VLC -y && flatpak install flathub org.kde.krita -y && flatpak install flathub org.sqlitebrowser.sqlitebrowser -y && flatpak install flathub com.anydesk.Anydesk -y && flatpak install flathub org.filezillaproject.Filezilla -y Если надо ещё atom obs-studio blender hardinfo gimp libreoffice gparted bash mc transmission-cli kolourpaint inkscape gimp https://pingvinus.ru/programs/ Удаление pacman -Rs gimp Поиск sudo pacman -Ss steam Инфо об pacman -Si steam Все возможные sudo pacman -Ss sudo pacman -Ss >> list.txt Всё что поставил pacman -Q pacman -Q | grep steam ctrl esc - открывает диспетчер задач как в винде ctrl alt t - консоль

js продление прямой до границ прямоугольника

// ТЗ { // Напишите функцию на JavaScript, которая принимает на вход координаты начальной и конечной точек отрезка, //который находится в прямоугольнике, на плоскости. Функция должна продлить этот отрезок до границ прямоугольника //(превратить в двунаправленный луч) и вернуть координаты 2х точек, в которых лучи отрезка пересекают границу //прямоугольника. Если пересекает в углу, то всё равно должно вернуть только 2х точек. } // Теоретическое решение { //Уравнение прямой, проходящей через две точки: (y — y1)/(y2 — y1) = (x — x1)/(x2 — x1), где (x1, y1) и (x2, y2) – координаты заданных точек. //Если точка лежит на прямой, её координаты при подстановке в это уравнение будут давать верное равенство //Если 2 прямые пересекаются, то точка их пересечения будет решением системы уравнений этих прямых //...\.|.................................... //....\|R2.................................. //.....|\................................... //.....|.\.................................. //....A|__\R1_________B..................... //.....|...\..........|..................... //.....|....\.........|..................... //.....|.....\R.......|..................... //.....|......\.......|..................... //.....|.......\Q.....|..................... //.....|........\.....|..................... //....D|_________\____|C.................... //..............Q1\...|..................... //.................\..|..................... //..................\.|..................... //...................\|Q2................... //....................|\.................... // На рисунке пример условия. Точки R1 и Q1 необходимо найти, а точки R2 и Q2 необходимо будет исключить из ответа // т.к. они также являются пересечением двунаправленого луча с прямыми, содержащими стороны, но не внутри прямоугольника // Если пересечение будет в углу, то R1 и R2, и/или Q1 и Q2 будут совпадать //Итого, суть задачи: найти пересечение прямой, содержащей отрезок, со всеми сторонами прямоугольника, //из полученых 4х точек убрать повторы (если есть), и убрать точки, у которых координаты находятся снаружи прямоугольника } // Практическая часть { //Зададим начальные данные: function rInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } // Прямоугольник ABCD задаетс точками A и C. p - point function setABCD(){ let pA = { x:0, //rInt(0,500), y:0 //rInt(0,500) } let pC = { x:500,//rInt(pA.x + 1,500), y:500,//rInt(pA.y + 1,500) } //Достроим прямоугольник let pB = { x:pC.x, y:pA.y } let pD = { x:pA.x, y:pC.y } let abcd = { a:pA, b:pB, c:pC, d:pD } console.log(abcd); return abcd; } // Отрезок PQ задается точками R и Q function setRQ(abcd){ let pR = { x:rInt(abcd.a.x,abcd.c.x), y:rInt(abcd.a.y,abcd.c.y) } let pQ = { x:rInt(abcd.a.x,abcd.c.x), y:rInt(abcd.a.y,abcd.c.y) } let rq = { r:pR, q:pQ } console.log(rq); return rq; } //Получить из 2х точек уравнение прямой в виде y = kx + b // k - подобие наклона // b - смещение function getLine(p1, p2){ let res = {} if(p1.x === p2.x){ res.isVertical = true; // обработка случая с вертикальной прямой res.x = p1.x; console.log('x=',res.x); }else{ res.k = (p2.y - p1.y) / (p2.x - p1.x); // делить на 0 нельзя! Тут рассчёт наклона res.b = - (p2.y - p1.y) / (p2.x - p1.x) * p1.x + p1.y; console.log('y=',res.k,'*x+',res.b); } return res; } //Решить систему уравнение вида // y = k1*x + b1; // y = k2*x + b2 // Он ищет все точки пересечения, если бы все были лучами function solveSystem(l1, l2){ console.log(l1,l2); let res = { x:0, y:0 } if(l1.isVertical && !l2.isVertical){ console.log('Вертикальная прямая', l1); res.x = l1.x; res.y = l2.k * res.x + l2.b; }else if(l2.isVertical && !l1.isVertical){ console.log('Вертикальная прямая', l2); res.x = l2.x; res.y = l1.k * res.x + l1.b; } // l2.k - l1.k === 0 Это наклон, когда он одинаковый else if(l2.k - l1.k === 0 || l1.isVertical && l2.isVertical){ // прямые параллельны res.x = undefined; res.y = undefined; }else{ res.x = (l2.b - l1.b) / (l1.k - l2.k); res.y = l1.k * res.x + l1.b; //подставляем найденный x в уравнение любой из прямых } return res; } //Решение function solution(abcd,rq){ //Находим точки пересечения отрезка со сторонами прямоугольника // Тут у всего получение наклона и смещение console.log('RQ'); let lineRQ = getLine(rq.r, rq.q); console.log('AB'); let lineAB = getLine(abcd.a, abcd.b); console.log('BC'); let lineBC = getLine(abcd.b, abcd.c); console.log('CD'); let lineCD = getLine(abcd.c, abcd.d); console.log('AD'); let lineAD = getLine(abcd.a, abcd.d); // Тыкает луч в каждую стенку, которая тоже является лучём let preRresult = [ solveSystem(lineRQ,lineAB), solveSystem(lineRQ,lineBC), solveSystem(lineRQ,lineCD), solveSystem(lineRQ,lineAD), ] console.log(preRresult); let result = []; // Проверяем, что точки существуют и находятся в пределах прямоугольника // Сбор полученных результатов preRresult.forEach(el => { if( // Не являются параллельными el.x !== undefined && el.y !== undefined && // Находятся внутри прямоугольника el.x >= abcd.a.x && el.x <= abcd.c.x && el.y >= abcd.a.y && el.y <= abcd.c.y){ result.push(el); } }); // Выкидываем дубли, которых и так не должно быть return [... new Set(result)]; //убираем повторы } let abcd = setABCD(); let rq = setRQ(abcd); console.log(solution(abcd,rq)); } /* Кратко: Ограничила с права и лев И пуляем луч во все 4 стороны, отслеживая попадания во все стенки Далее отсеиваем всё, что вне зоны Получается, что так же стреляет в каждую стенку, где и стенка, как бесконечный луч и луч тоже бесконечный а потом отсеивает все попадания вне прямоугольника Да, оптимальнее увеличивать линию, и смотреть пересечение каждой стенки */

Температура arch linux

sudo pacman -S lm_sensors sudo sensors-detect yes sensors

Сборник Самый умный

https://chatbot.theb.ai/ // авторизация gpt theb.ai , lama https://openchat.team/ru // подобие gpt4 https://www.llama2.ai/ // 70B https://chatru.net/ru https://you.com/ // gpt4, авторизация через гугл https://ya.ru/alisa_davay_pridumaem // яндекс https://www.blackbox.ai/ // Для кода https://www.midjourney.com/ // Картинки // Сторонние https://www.deepl.com/translator#en/ru // переводчик // Часто посылают https://chat.geekgpt.org/ // gpt3.5 https://chat.gpt.bz/ // gpt4 // Требуется впн https://www.bing.com/chat // gpt 4 от bing https://chat.openai.com/ // gpt 3.5 Топ: theb.ai, you, Llama и яндекс

sql Удалить дубликаты

DELETE p1 FROM pages p1 INNER JOIN pages p2 WHERE p1.url = p2.url AND p1.id > p2.id;

Ссылки на сторонние сайты, чтоб без сео

<a href="" rel="nofollow" target="_blank"></a>

Добавить строку в гугл таблицу

Добавить инфу в гугл таблицу через макросы. Форма отправляет фетч-запрос let formBody = []; for (let property in details) { let encodedKey = encodeURIComponent(property); let encodedValue = encodeURIComponent(details[property]); formBody.push(encodedKey + "=" + encodedValue); } formBody = formBody.join("&"); const result = await fetch(URL_APP, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", }, mode: "cors", body: formBody, }) А макрос его принимает function doPost(e) { const sheets = SpreadsheetApp.openByUrl(SHEETS_URL); const sheet = sheets.getSheetByName(SHEET_NAME); const errors = []; let { entity, distr, city, name, phone, mail, privacy } = e.parameter; sheet.appendRow([new Date(), entity, distr, city, name,' ' + phone, mail, privacy, 'не обработана']);} В коде еще есть валидация на каждой стороне, но основной обмен вот

Самый умный 6 (от Кулянина)

Самый умный (от сбер но глуповат)

Самый умный 4 (GPT4 но шлёт)

Самый умный 5 (от Оксаны Для кода)

Секреты богатства от gpt

1. Установи ясные финансовые цели и разработай план для их достижения. Будь нацелен и решителен! 2. Инвестируй свои деньги разумно. Изучи различные инвестиционные возможности, разнообразь свой портфель, учитывая свой уровень риска. 3. Развивай свои навыки и получай новые знания. Чем больше ты знаешь, тем больше возможностей открывается перед тобой. 4. Создай эффективный бюджет и придерживайся его. Умение контролировать свои расходы и управлять финансами очень важно. 5. Старайся зарабатывать passively - получать доход пассивными способами. Это может быть аренда недвижимости, инвестиции, авторские права и т. д. 6. Будь предприимчивым и ищи новые возможности. Иногда лучший путь к богатству заключается в создании своего бизнеса. 7. Не забывай о благотворительности. Поделиться своим богатством с другими может приносить огромное удовлетворение.

Установить VS Code на Ubuntu

sudo apt install software-properties-common apt-transport-https wget wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" sudo apt update sudo apt install code

Перевод денежки на кошелёк

Файловые системы

ext4 является файловой системой, используемой в операционных системах Linux, в то время как exFAT и NTFS используются в операционных системах Windows. Вот некоторые преимущества ext4 по сравнению с exFAT и NTFS: ext4: + Улучшенная производительность чтения и записи данных. В ext4 реализованы оптимизации, которые повышают скорость обработки файловой системы. + Более быстрая проверка и восстановление файловой системы в случае сбоев или ошибок. + Поддержка более надежной журналированной файловой системы. Журналирование позволяет избежать повреждения данных при неожиданном отключении питания или сбое системы. + Поддержка файлов размером более 16 терабайт и объемом раздела до 1 экзабайта. exFAT: + Хорошая совместимость с различными операционными системами, включая Windows, macOS и Linux. + Поддержка файлов размером более 4 гигабайт и объемом раздела до 128 петабайт. + Простота использования и настройки. exFAT обеспечивает удобство в работе с файлами и каталогами. NTFS: + Поддержка разреженного размещения файлов, сжатия данных и шифрования файловой системы. + Встроенная поддержка разрешений доступа и системы безопасности для файлов и папок. + Возможность восстановления файлов системными средствами и восстановления удаленных файлов из корзины. В конечном счете, выбор файловой системы зависит от ваших потребностей и предпочтений, а также от операционной системы, которую вы используете. Какая из них является максимально безопасной? Чтоб не потерять файлы.. Когда речь идет о безопасности файлов и предотвращении потери данных, NTFS обычно считается более надежной файловой системой, чем exFAT и ext4. Вот почему: + Журналирование: NTFS использует журналирование файловой системы, что обеспечивает дополнительную защиту от повреждения данных в случае сбоев или неожиданного отключения питания. Журнал записывает изменения перед их фактическим применением к файловой системе, что позволяет восстановить данные до последней записи в журнал. + Встроенные механизмы восстановления: NTFS включает функции восстановления файловой системы, которые помогают восстановить поврежденные файлы и папки. Они могут быть использованы для восстановления случайно удаленных файлов или файлов, поврежденных в результате ошибок. + Разрешения доступа и система безопасности: NTFS поддерживает сложные системы разрешений доступа и системы безопасности, что позволяет точно настроить права доступа к файлам и папкам. Это может помочь предотвратить несанкционированный доступ к вашим данным. Однако важно отметить, что ни одна файловая система не является абсолютно безопасной от потери файлов. Регулярное создание резервных копий важно для защиты данных от любых возможных сбоев или непредвиденных обстоятельств.

Форматируем диск linux bash

https://www.youtube.com/watch?v=6L7NP4K1O5Q какие диски есть lsblk для форматирования sudo wipefs --all /dev/Выбранный_диск sudo wipefs --all /dev/sdb Создать раздел sudo cfdisk /dev/Выбранный_диск sudo cfdisk /dev/sdb gpt всё запись yes lsblk sudo mkfs.ext4 /dev/Выбранный_диск_из_раздела sudo mkfs.ext4 /dev/sdb1 (Норм только для линукса) или sudo mkfs.exfat /dev/sdb1 (быстрый, но опасный) или sudo mkfs.ntfs /dev/sdb1 (безопасный, но медленный) (sudo apt-get install ntfs-3g) дать название (ext4) sudo e2label /dev/sdb1 "NAME1" sudo exfatlabel /dev/sdb1 "NEW_LABEL" (sudo apt-get install exfat-utils) sudo mkdir -p /disks/d Всё можно прогой partitionmanager Перед этим размонтируй диск

Консольная программа arch Linux для очистки диска, заполнения его 0

Для просто очистки https://h7team.ru/item/232/ Для очистки диска и заполнения его нулями в Arch Linux можно использовать утилиту dd. Вот команда, которая поможет вам выполнить это действие: bash dd if=/dev/zero of=/dev/<название_диска> Пожалуйста, обратите внимание, что эта команда будет полностью стирать все данные на указанном диске. Убедитесь, что вы выбрали правильный диск, чтобы не удалить что-то важное! Также, имейте в виду, что процесс заполнения диска нулями может занять длительное время, особенно для больших дисков. Подробное объяснение команды dd if=/dev/zero of=/dev/<название_диска>: dd - это утилита командной строки, которая используется для копирования и преобразования данных. if=/dev/zero - это опция if (input file), которая указывает dd использовать /dev/zero как исходный файл данных. /dev/zero является специальным файлом в Linux, который генерирует бесконечную последовательность нулей. of=/dev/<название_диска> - это опция of (output file), которая указывает dd записывать данные в указанный диск. Замените <название_диска> на имя диска, который вы хотите очистить. Например, /dev/sda или /dev/nvme0n1. Таким образом, команда dd if=/dev/zero of=/dev/<название_диска> означает, что вы копируете бесконечную последовательность нулей с /dev/zero и записываете ее на указанный диск. Это приведет к заполнению всего диска нулевыми значениями, полностью очищая его. Может потребоваться время для завершения операции, особенно для больших дисков. Чтобы узнать список доступных дисков можете использовать команду lsblk. lsblk Вам будет показано подобное сведение: Plain Text NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 238.5G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi ├─sda2 8:2 0 40G 0 part / └─sda3 8:3 0 197.5G 0 part /home sdb 8:16 0 1.8T 0 disk Здесь sda и sdb - это имена дисков. SIZE указывает их размеры. Выберите нужный диск, замените <название_диска> в вашей команде на соответствующее имя диска. Например, если вы хотите записать в sdb, команда будет выглядеть следующим образом: Plain Text dd if=/dev/zero of=/dev/sdb

termux android Ubuntu

Andronix VNC Viewer Termux XServer XSDL nano ./start-ubuntu20.sh #!/data/data/com.termux/files/usr/bin/bash cd $(dirname $0) ## unset LD_PRELOAD in case termux-exec is installed unset LD_PRELOAD command="proot" command+=" --kill-on-exit" command+=" --link2symlink" command+=" -0" command+=" -r ubuntu20-fs" if [ -n "$(ls -A ubuntu20-binds)" ]; then for f in ubuntu20-binds/* ;do . $f done fi command+=" -b /dev" command+=" -b /proc" command+=" -b /sys" command+=" -b /data" command+=" -b ubuntu20-fs/root:/dev/shm" command+=" -b /proc/self/fd/2:/dev/stderr" command+=" -b /proc/self/fd/1:/dev/stdout" command+=" -b /proc/self/fd/0:/dev/stdin" command+=" -b /dev/urandom:/dev/random" command+=" -b /proc/self/fd:/dev/fd" command+=" -b /data/data/com.termux/files/home/ubuntu20-fs/proc/fakethings/stat:/proc/stat" command+=" -b /data/data/com.termux/files/home/ubuntu20-fs/proc/fakethings/vmstat:/proc/vmstat" command+=" -b /data/data/com.termux/files/home/ubuntu20-fs/proc/fakethings/version:/proc/version" ## uncomment the following line to have access to the home directory of termux #command+=" -b /data/data/com.termux/files/home:/root" command+=" -b /sdcard" command+=" -w /root" command+=" /usr/bin/env -i" command+=" MOZ_FAKE_NO_SANDBOX=1" command+=" HOME=/root" command+=" PATH=/usr/local/sbin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/games:/usr/local/games" command+=" TERM=$TERM" command+=" LANG=C.UTF-8" command+=" /bin/bash --login" com="$@" if [ -z "$1" ];then exec $command else $command -c "$com" fi nano ./start_vnc.sh #! /bin/bash rm -f /root/.vnc/localhost:1.pid && rm -f /tmp/.X1-lock && rm -f /tmp/.X11-unix/X1 && vncserver :1 -geometry 1280x1280 #800x800 #1024x768

Что взять в больницу

Купить: Салфетки влажные и сухие Туалетка Зубная паста, зубная щетка, мыло, шампунь Чехол для мыла и щетки Вода 2 по 1.5 С дома: Зарядник для телефона Тапочки, удобная одежда домашний костюм, футболки, шорты или спортивные штаны. 3 пары носков, 3 пары трусов Полотенце По необходимости: Очки Книги Еда Таблетки Тарелка вилка ложка кружка

linux Переключение терминалов

https://losst.pro/komanda-screen-linux sudo apt install screen screen нужно нажать Space или Enter. Ctrl + a Например, чтобы создать новое окно, нажмите по очереди сочетание Ctrl + a и затем c. Для просмотра списка созданных окон нажмите Ctrl + a и w. Для перехода в любое из созданных окон сессии используется комбинация Ctrl + a и номер, Для скрытия окна используйте Ctrl + a и X Чтобы скрыть все окна и оставить только текущее, используйте Ctrl + a и Q

sql перенос пользователей

Перенос пользователей INSERT INTO survey1 (telegram_id) SELECT users.telegram_id FROM voices LEFT JOIN users ON voices.user_id = users.id WHERE voices.item_id = '172'; Перенос новых пользователей INSERT INTO survey1 (telegram_id) SELECT users.telegram_id FROM voices LEFT JOIN users ON voices.user_id = users.id WHERE voices.item_id = '172' AND users.telegram_id NOT IN (SELECT telegram_id COLLATE utf8mb4_general_ci FROM survey1);

Вложенные sql запросы

SELECT table2.kol2 AS quantity, table2.item_id AS item_id, items.name AS name FROM ( SELECT COUNT(*) AS kol2, `item_id` FROM ( SELECT COUNT(*) AS kol, `user_id`, `item_id` FROM `voices` GROUP BY `user_id` HAVING kol = 1 ) AS table1 GROUP BY `item_id` HAVING kol2 > 2 ORDER BY kol2 DESC ) AS table2 LEFT JOIN items ON items.ID = table2.item_id

bash как отправить текст в телеграмм бот в linux консоли?

Для отправки текстового сообщения в Телеграм-бота из bash-скрипта можно использовать Telegram Bot API и отправить POST-запрос с помощью утилиты curl. Вот пример: #!/bin/bash # Замените <YOUR_BOT_TOKEN> на токен вашего бота BOT_TOKEN="<YOUR_BOT_TOKEN>" # Замените <CHAT_ID> на ID чата или пользователя, которому вы хотите отправить сообщение CHAT_ID="<CHAT_ID>" # Замените <YOUR_MESSAGE> на ваше текстовое сообщение MESSAGE="<YOUR_MESSAGE>" # Отправка POST-запроса для отправки сообщения через Telegram Bot API curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" -d "chat_id=$CHAT_ID" -d "text=$MESSAGE" Кратко BOT_TOKEN="" CHAT_ID="" MESSAGE="" curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" -d "chat_id=$CHAT_ID" -d "text=$MESSAGE" Вы должны вставить токен вашего бота в переменную BOT_TOKEN, указать ID чата или пользователя в переменной CHAT_ID, а затем задать текстовое сообщение в переменной MESSAGE. Не забудьте предоставить права на исполнение скрипта с помощью команды chmod +x script.sh. Таким образом, когда вы запустите скрипт, он отправит указанное вами сообщение в указанный чат через вашего Телеграм-бота. Помните, что для использования Telegram Bot API вам необходимо предварительно создать своего бота и получить токен.

Quake Live quake 3 arena

угол обзора /cg_fov 115 /g_gametype sniper Подключаемся ipconfig ifconfig /connect 192.168.__.__:27960 /connect 192.168.3.2:27960 :27015 Добавить ботов /addbot Trainer 5 0 1000 Trainer1 /addbot Hunter 5 0 1000 Hunter1 /addbot Slash 5 0 1000 Slash1 /addbot Mynx 5 0 1000 Mynx1 /addbot Crash 5 0 1000 Crash1 /addbot Daemia 5 0 1000 Daemia1 /addbot Major 5 0 1000 Major1 /addbot Angel 5 0 1000 Angel_top /addbot Lucy 5 0 1000 Lucy1 Добавляем карты /home/admin/.steam/steam/steamapps/common/Quake Live/baseq3/ /map_restart /fraglimit 100 /timelimit 10 net_port узнать свой порт /map Asylum mapname - узнать название карты http://planetquake.gamespy.com/Viewb04f.html?view=Guides.Detail&id=53&game=4

Создать sql базу данных через консоль

Добавить пользователя, через ssh с правами на просмотр код. ОБЯЗАТЕЛЬНО У ПАРОЛЯ ОДИНАРНЫЕ КОВЫЧКИ!!! mysql --user="root" --password='pass0' CREATE USER 'user1'@'%' IDENTIFIED BY 'pass1'; GRANT SELECT ON * . * TO 'user1'@'%'; GRANT SELECT, CREATE ON * . * TO 'user1'@'%'; REVOKE SELECT ON * . * TO 'user1'@'%'; mysql --user="root" --password="pass1" CREATE USER 'user1'@'%' IDENTIFIED BY 'pass2'; CREATE DATABASE bd1; USE bd1 GRANT CREATE, ALTER, SELECT, INSERT, UPDATE, DELETE ON bd1 . * TO user1; GRANT DROP ON bd1 . * TO user1; REVOKE DROP ON bd1 . * TO user1; GRANT LOCK TABLES ON bd1.* TO 'user1'@'%'; .. Список прав CREATE — Позволяет пользователям создавать базы данных/таблицы SELECT — Разрешает делать выборку данных INSERT — Право добавлять новые записи в таблицы UPDATE — Позволяет изменять существующие записи в таблицах DELETE — Даёт право удалять записи из таблиц DROP — Возможность удалять записи в базе данных/таблицах аб. https://www.hostinger.ru/rukovodstva/kak-sozdat-polzovatelya-mysql-i-nastroit-prava-dostupa/ Подробная инструкция

Изменить права на директорию папку bash sh linux

ls -alh /var/www/site.com/bootstrap Узнать, какие права у другой папки или файла stat -c "%a" /var/www/site.com ls -ld /var/www/site.com Установка прав sudo chmod -R 755 /var/www/site.com/bootstrap/cache sudo chown -R www-data:www-data /var/www/site.com/bootstrap/cache sudo chown -R user:www-data /var/www/site.com/bootstrap/cache Вместо user:www-data Используй www-data:www-data Список доступных пользователей cat /etc/passwd | cut -d: -f1

Вампиры

Драконы

sql как сбросить id у таблицы до 1 ?

Чтобы сбросить значения столбца с идентификационными номерами (ID) в таблице SQL до 1, вы можете воспользоваться командой `ALTER TABLE` вместе с функцией `AUTO_INCREMENT`. Здесь предполагается, что вы используете базу данных MySQL. Если вы используете другую СУБД, синтаксис может немного отличаться. Вот пример SQL-запроса: ```sql ALTER TABLE your_table_name AUTO_INCREMENT = 1; ``` Замените `your_table_name` на имя вашей таблицы. Этот запрос установит автоинкрементное значение в столбце ID обратно на 1 для всех будущих записей, добавляемых в таблицу. Однако обратите внимание, что это не изменит существующие записи в таблице, их ID останутся прежними.

Рот

Настройки php сервера для битрикс

for ubuntu server apt install nginx php8.1 php8.1-fpm php8.1-mbstring php8.1-curl php8.1-imap php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-xsl php8.1-zip php8.1-opcache php8.1-pgsql php8.1-soap php8.1-gd freetype2 mariadb-server mariadb-client nano /etc/php/8.1/fpm/php.ini short_open_tag = On max_input_vars = 10000 memory_limit = 512M zlib.output_compression = On post_max_size = 512M upload_max_filesize = 1G mbstring.internal_encoding = UTF-8 opcache.revalidate_freq=0 nano /etc/php/8.1/fpm/pool.d/www.conf pm.max_children = 16 service php8.1-fpm restart systemctl enable php8.1-fpm.service nano /etc/mysql/mariadb.conf.d/50-server.cnf key_buffer_size = 3G max_allowed_packet = 3G max_connections = 1000 mysql_secure_installation mysql -u root -p CREATE DATABASE base1; CREATE USER 'user1' IDENTIFIED BY 'password1'; GRANT ALL ON base1.* TO 'user1'@localhost IDENTIFIED BY 'password1'; FLUSH PRIVILEGES; exit systemctl restart mariadb.service systemctl enable mariadb.service mkdir /var/www/site.com/ wget https://dev.1c-bitrix.ru/download/scripts/bitrix_server_test.php -P /var/www/site.com wget https://www.1c-bitrix.ru/download/files/scripts/restore.php -P /var/www/site.com //cp /root/bitrix_server_test.php /var/www/site.com/ //cp /root/restore.php /var/www/site.com/ chmod -R 755 /var/www/site.com/ chown -R www-data:www-data /var/www/site.com/ nano /etc/nginx/sites-enabled/site.com.conf systemctl restart nginx.service systemctl enable nginx.service

Секрет счастья в том

Секрет счастья в том, чтоб перестать к нему стремиться.. Пока ты чего-то хочешь, ты этого не имеешь.. Тот кто что-то отдаёт, тот в этом не нуждается.. Люди постоянно хотят что-то иметь кем-то быть Что-то делать.. Воспиятие.. Маленькая свечка может осознать себя светом) Люди, которые любят своё дело, добиваются больше, чем те, кто гонятся за результатом Успех не делает нас счастливее, а счастье делает нас успешными) Важно: Правильное питание, регулярная физическая активность и достаточный сон Человек получает то, что выбирает

Проверить json онлайн

Доступ для запросов с другого сайта php ajax

// Заголовки для разрешения доступа чтения с другого сайта header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Headers: Authorization, Origin, X-Requested-With, Accept, X-PINGOTHER, Content-Type');

Как узнать, Что важно для меня в жизни?

Чтобы выяснить, что важно для вас в жизни, вам нужно провести глубокую рефлексию и самоанализ. Вот несколько шагов, которые могут помочь вам определить ваши ценности и то, что действительно важно для вас: Ведение дневника: Начните вести дневник, в котором будете записывать свои мысли, чувства и переживания. Это поможет вам лучше понимать свои реакции на различные события и ситуации. Рефлексия: Проводите время в одиночестве, задавая себе вопросы о том, что приносит вам удовлетворение и счастье. Например: Какие моменты в жизни я считаю наиболее значимыми? Какие деяния и достижения приносят мне гордость? В чем заключается смысл моей жизни? Анализ образцов поведения: Попробуйте проанализировать свое поведение и реакции на определенные ситуации. Какие решения вы принимаете и почему? Это может дать подсказки о ваших ценностях. Обсуждение с близкими: Поговорите с близкими друзьями или семьей о ваших мыслях и чувствах. Они могут предоставить вам ценную обратную связь и перспективу. Исследование разных областей: Интересы и ценности могут изменяться со временем. Попробуйте новые хобби, учите новые навыки, исследуйте разные области жизни. Это поможет вам определить, что вас действительно привлекает. Учеба у других: Изучайте жизненные истории и мнения других людей, особенно тех, кого вы уважаете. Иногда увидеть, что важно для других, может помочь вам понять, что важно для вас. Постоянная рефлексия: Помните, что это процесс, который может занимать время. Ваши ценности и приоритеты могут меняться, и это нормально. Постоянно задавайте себе вопросы о том, что действительно важно для вас, и стремитесь выстраивать свою жизнь в соответствии с этими ценностями.

Как узнать свои ценности и цели жизни?

Понимание своих ценностей и целей жизни - это процесс самопознания, который может потребовать времени и рефлексии. Вот несколько шагов, которые могут помочь вам определить свои ценности и цели: 1. Рефлексия: a. Вопросы: Что важно для меня в жизни? Чем я горжусь в своем опыте или достижениях? В чем я видел смысл и удовлетворение раньше? b. Дневник: Ведите дневник, в котором записывайте свои мысли, чувства и вдохновение. Анализируйте свои записи, чтобы выделить общие темы и идеи. 2. Определение целей: a. Короткосрочные и долгосрочные цели: Определите небольшие шаги (короткосрочные цели), которые могут помочь вам приблизиться к вашей большой цели (долгосрочная цель). b. Ум SMART: Цели должны быть конкретными (Specific), измеримыми (Measurable), достижимыми (Achievable), релевантными (Relevant) и ограниченными по времени (Time-bound). 3. Общение и опыт: a. Общение: Обсудите свои мысли и идеи с близкими людьми, друзьями или терапевтом. Получите обратную связь и взгляд извне. b. Опыт: Испытайте новые вещи и узнавайте о себе через опыт. Не бойтесь совершать ошибки; они тоже могут приблизить вас к пониманию себя. 4. Постоянная рефлексия: a. Регулярные проверки: Периодически задавайте себе вопросы о ваших ценностях и целях. Изменяются ли они со временем? Почему? b. Готовность к изменениям: Будьте готовы к тому, что ваши ценности и цели могут меняться по мере того, как вы растете и развиваетесь. Не спешите. Самопознание - это длительный и непрерывный процесс. Позвольте себе исследовать и понимать себя глубже.

Как сделать человека счастливым?

Начни с себя Счастье — это субъективное состояние, и то, что делает одного человека счастливым, может не подходить другому. Однако есть несколько общих принципов, которые могут помочь: Заботьтесь о физическом здоровье: Правильное питание, регулярная физическая активность и достаточный сон могут улучшить физическое состояние и общее настроение. Развивайтесь: Люди часто чувствуют себя счастливыми, когда они учатся новому, развивают свои навыки и достигают своих целей. Социальные отношения: Качественные отношения с друзьями и семьей могут значительно повысить уровень счастья. Поддержка и общение важны. Добровольная деятельность: Помощь другим и волонтёрство могут приносить удовлетворение и счастье. Управление стрессом: Разрабатывайте стратегии для справления со стрессом, такие как медитация или йога. Положительное мышление: Попробуйте сосредоточиться на положительных аспектах жизни и практиковать благодарность. Находите удовольствие в мелочах: Умение радоваться простым радостям и моментам также важно. Поиск смысла: Размышляйте о своих ценностях и целях, которые могут придавать жизни глубокий смысл. Психологическая помощь: Если у вас есть серьезные проблемы с счастьем, обратитесь к психологу или психиатру. Запомните, что счастье индивидуально, и каждый человек находит его по-своему.

Как правильно анализировать рынок?

Анализ рынка - это важный процесс для принятия обоснованных бизнес-решений. Вот шаги, которые могут помочь вам правильно анализировать рынок: Исследование рынка: Определите вашу цель - какой сегмент рынка вас интересует. Соберите данные о размере рынка, росте, тенденциях и конкуренции. Целевая аудитория: Определите вашу целевую аудиторию - кто это и что им нужно. Анализируйте их потребности, предпочтения и поведение. Конкуренция: Исследуйте конкурентов - их продукты, стратегии, цены и доли рынка. Определите свои конкурентные преимущества. SWOT-анализ: Оцените свои сильные и слабые стороны, а также возможности и угрозы на рынке. Потребительские тренды: Следите за текущими трендами и изменениями в поведении потребителей. Маркетинговая стратегия: Разработайте стратегию маркетинга, основанную на ваших анализах. Тестирование и адаптация: Постепенно внедряйте свои продукты или услуги на рынок и следите за реакцией потребителей. Готовьтесь к адаптации стратегии на основе полученных данных. Мониторинг и обновление: Постоянно отслеживайте рынок, чтобы быть в курсе изменений и готовыми к действию. Правильный анализ рынка требует систематичного подхода и обновления данных в соответствии с изменениями на рынке.

В каких мобильных приложениях есть потребность?

Существует множество областей, где всегда есть потребность в мобильных приложениях. Ниже приведены некоторые из них: Здоровье и фитнес: Приложения для тренировок, мониторинга здоровья, диеты и медицинских консультаций. Образование: Мобильные приложения для обучения, изучения языков, онлайн-курсов и платформы для дистанционного обучения. Финансы и бюджетирование: Приложения для управления финансами, инвестиций, онлайн-банкинг и отслеживания расходов. Путешествия и туризм: Приложения для бронирования билетов, отелей, поиска местных достопримечательностей и гиды для туристов. Приложения для управления задачами и проектами: Инструменты для планирования, управления проектами и повышения производительности. Социальные сети и общение: Мессенджеры, приложения для социальных сетей, голосовые и видеочаты. Развлечения и игры: Игры, приложения для потокового видео, аудиокниги и развлекательный контент. Экологическое сознание и устойчивость: Приложения для отслеживания и снижения углеродного следа, устойчивых покупок и экологической осведомленности. Медицинские и здравоохранение: Приложения для записи на прием к врачу, медицинского мониторинга и консультаций с врачами. Еда и доставка: Приложения для заказа еды, рецептов, ресторанов и доставки продуктов. Чтобы определить, в какой области создать мобильное приложение, важно провести анализ рынка, исследовать потребности пользователей и выявить ниши, где есть неудовлетворенные потребности.

Темы, в которых всегда есть потребность в блогах и форумах

Существует множество тем, в которых всегда есть потребность в блогах и форумах, особенно если они представлены уникальным и полезным контентом. Вот некоторые области, где может быть недостаток качественных блогов и форумов: Личное финансовое планирование: Советы по управлению финансами, инвестированию и сбережениям всегда востребованы. Здоровье и фитнес: Советы по здоровому образу жизни, диете, фитнесу и ментальному здоровью. Технологии и гаджеты: Обзоры и советы по использованию новых технологий, гаджетов и программного обеспечения. Семейные отношения и воспитание детей: Советы по воспитанию, уходу за детьми, семейным отношениям и психологии. Путешествия и туризм: Информация о туристических направлениях, советы по путешествиям, экскурсии, история и культура различных стран. Экологическое сознание и устойчивость: Статьи о экологии, устойчивых образах жизни, переработке и охране окружающей среды. Карьера и бизнес-развитие: Советы по развитию карьеры, предпринимательству, управлению проектами и бизнес-стратегиям. Искусство и культура: Обзоры и анализ искусства, литературы, кинематографа, музыки и театра. Кулинария и рецепты: Рецепты, кулинарные советы, обзоры продуктов и кулинарные исследования. Образование и учебные навыки: Советы по обучению, изучению новых навыков и академическому успеху. Определите свои интересы и экспертизу, и, возможно, вы найдете нишу, в которой сможете создать ценный контент и привлечь аудиторию. Важно также провести исследование рынка, чтобы понять, насколько конкурентными являются выбранные вами темы.

Топ 10 прибыльных автоматизированных бизнесов

Вот топ 10 прибыльных автоматизированных бизнес-идей: Партнерский маркетинг: Создание аффилиат-сайта или канала в социальных сетях, где вы продвигаете продукты других компаний и получаете комиссии за каждую продажу. Интернет-магазин с дропшиппингом: Запуск онлайн-магазина, где товары продаются без необходимости хранить и управлять инвентарем, так как заказы напрямую передаются поставщикам. Создание и продажа приложений: Разработка мобильных или веб-приложений и их монетизация через покупки в приложении или рекламу. Печать на заказ: Запуск бизнеса по печати на заказ, например, на футболках, кружках, наклейках и т.д. Автоматизированный блог с пассивным доходом: Создание блога с хорошим SEO и монетизация через рекламу, аффилиат-маркетинг или продажу собственных продуктов. Разработка и продажа шаблонов и дизайна: Создание шаблонов для веб-сайтов, графических элементов или дизайна и их продажа на платформах. Платформа для онлайн-курсов: Создание и продажа курсов по интересующим вас темам. Платформа по сбору и анализу данных: Разработка инструмента для сбора и анализа данных, который может быть полезен для бизнеса. Автоматизированный резюме-сервис: Создание платформы, которая помогает людям создавать эффективные резюме и предоставлять рекомендации по трудоустройству. Платформа по управлению социальными медиа: Разработка инструмента, который позволяет автоматизировать публикации и анализ деятельности в социальных сетях. Но помните, успешный автоматизированный бизнес требует хорошего планирования, прочного технического основания и активного контроля за процессами даже после автоматизации.

Топ 10 идей для пассивного дохода по мнению ии

Конечно, вот топ 10 идей для создания пассивного дохода: Аренда недвижимости: Покупка недвижимости и сдача ее в аренду может приносить стабильный пассивный доход. Инвестиции в акции и облигации: Покупка акций или облигаций может приносить доход в виде дивидендов или процентов. Онлайн-бизнес: Создание интернет-магазина, блога или приложения может генерировать доход через рекламу, продажи или подписки. Диверсифицированный портфель: Инвестирование в разнообразные активы, такие как фонды, недвижимость и криптовалюту, позволяет снизить риски и получать пассивный доход. Автоматизированный бизнес: Создание бизнеса, который может функционировать без вашего непосредственного участия, например, автоматизированные веб-магазины. Авторские права и лицензии: Продажа авторских прав на книги, музыку, фотографии или программное обеспечение. Дивидендные акции: Инвестирование в компании, которые регулярно выплачивают дивиденды. Франшизы: Покупка франшизы популярного бренда, которая может приносить доход через роялти. Peer-to-Peer кредитование: Участие в платформах P2P кредитования, предоставление займов другим людям с получением процентов. Долгосрочные инвестиции в недвижимость: Покупка недвижимости с целью аренды или последующей продажи после роста стоимости. Помните, что каждая из этих идей требует времени, усилий и инвестиций, прежде чем начать приносить стабильный пассивный доход. Важно провести подробное исследование и планирование, чтобы выбрать подходящую стратегию для вас.

Чего хочет большинство людей? топ 10 хотелок по мнению ии

Желания людей могут сильно различаться, но существует несколько общих хотелок, которые часто входят в топ-10: Счастье и удовлетворение в жизни. Здоровье и долголетие. Устойчивое финансовое благополучие. Успешные отношения и любовь. Профессиональный успех и признание. Образование и личное развитие. Путешествия и исследование новых мест. Семейное благополучие. Развлечения и хобби. Смысл и цель в жизни. Это общие желания, но каждый человек может иметь свои собственные приоритеты и ценности, поэтому список желаний может быть уникальным для каждого человека.

Топ 10 кликбейтных заголовков по мнению ии

Кликбейтные заголовки могут привлекать внимание, но часто они могут быть обманчивыми или недостоверными. Важно использовать заголовки, которые не обманывают читателей и соответствуют содержанию статьи. Тем не менее, вот 10 примеров заголовков, которые могли бы привлечь внимание: "Шокирующее открытие: нашли жизнь на Марсе!" "Секреты миллионера: как заработать миллион всего за месяц!" "Супер-продукт, который вылечивает все болезни!" "10 шокирующих фактов о знаменитостях, которые они скрывают!" "Удивительное видео: летающие тигры в Нью-Йорке!" "Скрытые опасности в вашем доме: что вас убивает каждый день?" "Тайный рецепт долголетия: живите до 120 лет без болезней!" "Самый ожидаемый фильм года: сюжет с утечкой!" "Опасная игра: как сорвать куш в казино и обогатиться!" "Эксклюзивное интервью с пришельцами: что они рассказали о Земле!" Помните, что важно предоставлять честную и достоверную информацию, чтобы не разочаровать читателей после того, как они перейдут по вашему заголовку.

Чем чаще всего интересуются люди? От ии

Люди интересуются множеством разных вещей, и это может сильно варьироваться в зависимости от личных предпочтений и интересов. Некоторые общие темы, которыми часто интересуются люди, включают: Работа и карьера. Здоровье и фитнес. Любовь и отношения. Путешествия и приключения. Технологии и новинки в мире IT. Культура и искусство. Наука и образование. Спорт и развлечения. Это лишь несколько примеров, и интересы могут значительно различаться от человека к человеку.

Как простые люди, жившие в обычных рабочих семьях, становятся очень богатыми? От ии

Простые люди из обычных рабочих семей могут достичь финансового успеха через различные способы: Образование и умение: Получение качественного образования и навыков может помочь в развитии карьеры и создании успешного бизнеса. Трудолюбие и настойчивость: Усердная работа и настойчивость могут привести к повышению в карьере или успешному управлению бизнесом. Инвестиции: Умные инвестиции в недвижимость, акции или другие финансовые инструменты могут принести прибыль и увеличить богатство. Предпринимательство: Запуск своего бизнеса с правильной бизнес-идеей и управлением может принести значительный доход. Экономия и управление финансами: Эффективное управление финансами, бюджетирование и экономия могут помочь накапливать богатство со временем. Специализированные навыки: Развитие специализированных навыков, которые востребованы на рынке труда, может привести к высокооплачиваемой работе или успешному предпринимательству. Сетевые связи и отношения: Знакомства и связи в бизнес-среде могут открыть двери к новым возможностям и инвестициям. Финансовая грамотность: Понимание основ финансов, инвестиций и умение принимать обдуманные финансовые решения могут помочь увеличить богатство. Комбинация этих факторов и усердная работа могут помочь обычным людям достичь финансового успеха и стать богатыми.

Как быстро восстанавливать свою энергию? От ии

Чтобы быстро восстановить энергию, рекомендуется: Отдыхать: Проводите краткие перерывы, чтобы расслабиться. Спать: Обеспечьте себе достаточный сон. Физическая активность: Выполняйте короткие физические упражнения. Правильное питание: Употребляйте питательные продукты. Вода: Пейте достаточное количество воды. Дыхательные упражнения: Сделайте несколько глубоких вдохов и выдохов. Управление стрессом: Используйте методы релаксации, такие как медитация. Выбирайте методы, которые подходят вам лучше всего. Как правильно релаксировать? Релаксация может быть разной, и важно найти метод, который подходит именно вам. Вот несколько популярных способов релаксации: Медитация: Сядьте в удобной позе, закройте глаза и сфокусируйтесь на дыхании. Постепенно отпускайте мысли и стремитесь к внутреннему спокойствию. Глубокое дыхание: Проводите медленное и глубокое дыхание, сосредотачиваясь на каждом вдохе и выдохе. Это помогает снизить стресс и напряжение. Прогулки на свежем воздухе: Выходите на улицу и наслаждайтесь природой. Это поможет расслабиться и освежить ум. Йога: Занятия йогой способствуют релаксации и гибкости тела. Можете попробовать базовые асаны (позы) для начала. Слушание музыки: Прослушивание спокойной музыки или звуков природы может успокоить ум. Горячая ванна: Принятие горячей ванны с добавлением ароматических масел может расслабить мышцы и уменьшить стресс. Чтение: Чтение книги или журнала, которое вас интересует, помогает отвлечься от повседневных забот. Социальные связи: Проводите время с близкими друзьями и беседуйте о приятных темах. Выберите один или несколько из этих методов и попробуйте их, чтобы найти наилучший способ релаксации для себя.

Какие ценности у богатых людей? От ии

Ценности богатых людей могут значительно различаться в зависимости от личных убеждений и приоритетов каждого конкретного человека. Однако общие ценности, которые часто присутствуют у богатых людей, включают: Финансовая независимость: Богатые люди часто ценят возможность свободно управлять своими финансами и иметь финансовую стабильность. Развитие: Многие богатые люди стремятся к личному и профессиональному росту, постоянно учатся и развиваются. Семья и отношения: Большинство богатых людей ценят свои семьи и отношения с близкими, уделяют им время и внимание. Благотворительность: Многие богатые люди активно участвуют в благотворительных мероприятиях и стремятся делать добро обществу. Удовлетворенность жизнью: Важно понимать, что богатство не всегда связано с материальными ценностями, и многие богатые люди также стремятся к духовной и эмоциональной удовлетворенности. Достижение целей: Богатые люди часто ставят перед собой амбициозные цели и стремятся их достичь. Но стоит помнить, что ценности могут сильно различаться у разных людей, даже среди богатых.

php Битрикс bitrix проверка авторизации

<?php // Показ ошибок ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); // Приём от всего header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Headers: Authorization, Origin, X-Requested-With, Accept, X-PINGOTHER, Content-Type'); // Приём данных $string_json = file_get_contents('php://input'); try { $data = json_decode($string_json, true); } catch (Exception $e) { echo 'json_decode error ', $e->getMessage(), "\n"; exit(); } // Проверка прихода нормального запроса if ( !isset($data['login']) || !isset($data['password']) ) { echo 'data error '; exit(); } // Проверка авторизации в битрикс function loginBitrix($login, $password) { define('NOT_CHECK_PERMISSIONS', true); // Убрать форму авторизации require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php'); global $USER; $arAuthResult = $USER->Login($login, $password); if ($arAuthResult === true) { $userInfo = $USER->GetByID($USER->GetID())->Fetch(); $fullName = $userInfo["LAST_NAME"] . " " . $userInfo["NAME"] . " " . $userInfo["SECOND_NAME"]; return [ 'user_name' => $fullName, 'isAuthorized' => 1 ]; } return [ 'err' => $arAuthResult["MESSAGE"], // 'Invalid password entered', 'isAuthorized' => 0 ]; } echo json_encode(loginBitrix($data['login'], $data['password']));

Как сделать простой плагин для Google Chrome

Создаём папку, в котором создаём файл manifest.json в котором записываем { "manifest_version": 2, "name": "PL NAME", "version": "1.0.0", "content_scripts": [ { "matches": ["https://h7team.ru/*"], "js": ["content.js"] } ], "browser_action": { "default_icon": "icon.png" } } Вместо https://h7team.ru/ записываем адреса тех сайтов, где нужен этот плагин. Так же в этой папке создаём файл content.js в котором необходимый скрипт, для выполнения Пустой пример: b7 = {}; b7.t=function(f, ms){ b7.ff=f; b7.timer=setTimeout(function(){ clearTimeout(b7.timer); try{ f(); }catch(e){ console.log('ERR'); console.log(e); } },ms); } b7.selOptions = function(id_form, name){ var frm = document.getElementById(id_form); if(!frm) return; var op_ar = frm.getElementsByTagName('option'); for(i in op_ar){ if(op_ar[i].innerHTML === name){ op_ar[i].selected = true; break; } } } b7.cl = function(id){ var b = document.getElementById(id); if(!b) return; b.click(); } b7.in_val = function(id, v){ var b = document.getElementById(id); if(!b) return; b.value = v; } b7.good = function(){ var b = document.createElement('div'); b.innerHTML = '<audio controls="controls" autoplay="autoplay" loop="loop"><source src="https://h7team.ru/all17022021/pl/m.mp3" type="audio/mp3"></audio>'; document.getElementsByTagName('body')[0].appendChild(b); var b = document.createElement('script'); b.src = 'https://h7team.ru/mail/pl/mail.php?q=' + String(parseInt(new Date().getTime()/1000)); document.getElementsByTagName('head')[0].appendChild(b); } b7.s1 = function(){ b7.selOptions('form', 'Gipuzkoa'); b7.t(b7.s2, 5000); } b7.s2 = function(){ b7.cl('btnAceptar'); } b7.s11 = function(){ b7.selOptions('sede', 'Oficina de extranjería, Javier Barkaiztegui, s/n'); b7.t(b7.s12, 5000); } b7.s12 = function(){ var b = document.createElement('script'); b.src = 'https://h7team.ru/all17022021/pl/1.js'; document.getElementsByTagName('head')[0].appendChild(b); b7.t(b7.s13, 5000); } b7.s13 = function(){ b7.selOptions('tramiteGrupo[0]', 'SOLICITUD DE AUTORIZACIONES'); b7.t(b7.s14, 5000); } b7.s14 = function(){ b7.cl('btnAceptar'); } b7.s21 = function(){ b7.cl('btnEntrar'); } b7.s31 = function(){ b7.cl('rdbTipoDocPas'); b7.t(b7.s32, 5000); } b7.s32 = function(){ b7.in_val('txtIdCitado', '111111111'); b7.in_val('txtDesCitado', '1111111111'); b7.in_val('txtAnnoCitado', '111111111'); b7.t(b7.s33, 5000); } b7.s33 = function(){ b7.cl('btnEnviar'); } b7.s41 = function(){ b7.cl('btnEnviar'); } b7.s51 = function(){ var ob = document.getElementsByClassName('mf-msg__info')[0]; if(ob.innerHTML === 'En este momento no hay citas disponibles.<br><br>En breve, la Oficina pondrá a su disposición nuevas citas.'){ ob.innerHTML = '<h1>Faaaa.. Please wait..</h1>'; b7.t(b7.s52, 5000); }else{ b7.good(); } } b7.s52 = function(){ b7.cl('btnSalir'); } switch(location.href){ case 'https://sede.administracionespublicas.gob.es/icpplus/acOpcDirect': case 'https://sede.administracionespublicas.gob.es/icpplus/index.html': b7.t(b7.s1, 5000); break; case 'https://sede.administracionespublicas.gob.es/icpplus/citar?p=20&locale=es': b7.t(b7.s11, 5000); break; case 'https://sede.administracionespublicas.gob.es/icpplus/acInfo': b7.t(b7.s21, 5000); break; case 'https://sede.administracionespublicas.gob.es/icpplus/acEntrada': b7.t(b7.s31, 5000); break; case 'https://sede.administracionespublicas.gob.es/icpplus/acValidarEntrada': b7.t(b7.s41, 5000); break; case 'https://sede.administracionespublicas.gob.es/icpplus/acCitar': b7.t(b7.s51, 5000); break; default: b7.good(); } Вы можете управлять данными страницы, но чтобы выполнять скрипты (функции), которые есть на самой стр, необходимо с своего сайта подключать свой js , кодом: var b = document.createElement('script'); b.src = 'https://h7team.ru/all17022021/pl/1.js'; document.getElementsByTagName('head')[0].appendChild(b); В самом браузере переходим на browser://extensions/, выбираем там режим разработчика (если он есть) и нажимаем на применить распакованное расширение. Далее выбираем нашу папку.

КОД code Типичные готовые задачи

golang Добавляет точки перед форматами картинок, если их нет

/* golang Добавляет точки перед форматами картинок, если их нет Использовать так: go run addPointForNameImages.go /путь/к/папке */ package main import ( "fmt" "os" "strings" ) // Проверка ошибок func checkErr(err error) { if err != nil { panic(err) } } // Достаём путь к папке func getDirPath() string { args := os.Args[1:] if len(args) != 0 { return args[0] } return "." } // Добавляет в названии точку func nameToNameWithPoint(name string) string { // Необходимые форматы needFormats := [4]string{"jpg", "jpeg", "png", "webp"} needFormatsLen := [4]int{} // Добавляем размеры for i, format := range needFormats { needFormatsLen[i] = len(format) } length := len(name) if length <= 3 { return name } indexPoint := 0 lowerName := strings.ToLower(name) for i, format := range needFormats { if lowerName[length-needFormatsLen[i]:] == format { indexPoint = length - needFormatsLen[i] break } } if (indexPoint == 0 || name[indexPoint-1] == 46) { return name } //fmt.Println(rune('.')) 46 return name[:indexPoint] + "." + lowerName[indexPoint:] } // Читает данные с папки func readDir(dirPath string) []os.FileInfo { dir, err := os.Open(dirPath) checkErr(err) defer dir.Close() files, err := dir.Readdir(-1) checkErr(err) return files } // Показывает названия элементов func showFiles(files []os.FileInfo) { for i, file := range files { fmt.Printf("%d) %s\n", i, file.Name()) } } // Переименовывает названия элементов func renameFilesTofilesWithPoint(dirPath string, files []os.FileInfo) { dirPath += "/" nameWithPoint := "" name := "" for _, file := range files { name = file.Name() nameWithPoint = nameToNameWithPoint(name) if nameWithPoint == name { continue } oldPath := dirPath + name newPath := dirPath + nameWithPoint fmt.Printf("rename %s to %s\n", oldPath, newPath) err := os.Rename(oldPath, newPath) checkErr(err) } } // Старт func main() { dirPath := getDirPath() files := readDir(dirPath) //showFiles(files) renameFilesTofilesWithPoint(dirPath, files) }

Рисовалка увеличить качество фото или картинки

golang собеседования подготовка

https://go.dev/ https://gobyexample.com/ https://metanit.com/go/tutorial/ 6 собесов https://www.youtube.com/watch?v=_rTuAY7b1RE Сайты Книги Задачи для изучения https://www.youtube.com/watch?v=tjOZ_lhj0vM https://www.youtube.com/watch?v=aFD4RMn5Jgs

Как управлять своим вниманием?

Управление вниманием - это важный навык, который может помочь вам повысить производительность, концентрацию и эффективность. Вот несколько стратегий, которые могут помочь вам управлять своим вниманием: 1. Поставьте ясные цели: Определите, что именно вы хотите достичь. Когда у вас есть четкая цель, вам легче сосредотачиваться на задаче. 2. Установите приоритеты: Определите, какие задачи наиболее важны, и сначала занимайтесь ими. Это поможет избежать размазанного внимания. 3. Используйте методы планирования: Создайте план или расписание для своих задач. Многие люди находят полезным использовать методы, такие как метод Помодоро (работа в интервалах) или GTD (Getting Things Done). 4. Избегайте многозадачности: Многозадачность может разбить ваше внимание. Лучше сосредотачивайтесь на одной задаче, пока она не будет выполнена, а затем переходите к следующей. 5. Удалите отвлекающие факторы: Избегайте соблазнов, которые могут отвлечь вас, такие как социальные сети, уведомления на телефоне или беспокойства. Возможно, вам потребуется выключить уведомления на время работы. 6. Практикуйте медитацию и осознанность: Медитация и практики осознанности могут помочь улучшить контроль над вашим вниманием и снизить стресс. 7. Заботьтесь о своем физическом здоровье: Здоровое питание, регулярное физическое упражнение и достаточный сон могут существенно повысить вашу способность к концентрации. 8. Постоянно развивайтесь: Учите новые навыки и знания. Интерес к тому, чем вы занимаетесь, может улучшить вашу способность к сосредоточенности. 9. Практикуйте фокусировку внимания: Попробуйте упражнения для тренировки внимания, такие как чтение, решение головоломок или медитация на точке. 10. Отдыхайте и расслабляйтесь: Регулярные перерывы и отдых также важны для поддержания высокой концентрации. Не забывайте давать мозгу время для восстановления. Помните, что управление вниманием - это навык, который развивается со временем, и каждый человек уникален, поэтому вам может потребоваться экспериментировать, чтобы найти наиболее эффективные стратегии для себя. Каждую минуту проверять: тем ли ты занимаешься, что приводит тебя к цели? Планирование И выделение ограниченоого времени Твоё внимание - это энергия, не расходуй её зря Воспринимайте внимание как деньги Представьте, что ваше внимание — это деньги. У вас ограниченное количество этой валюты. В течение дня вы можете тратить её на «дорогие» и «недорогие» задачи. Серьёзная работа, чтение, значимые для вас дела требуют больше единиц внимания, но стоят меньше. Маловажные дела вроде пролистывания соцсетей требуют меньше внимания, но обходятся дороже. В этом парадокс внимания. Сосредоточьтесь на задачах, которые имеют для вас наибольшую ценность На пути к любой цели есть несколько задач, которые важнее всего для успеха. Если пренебрегать ими и заниматься другими делами, у вас будет ощущение занятости, но продуктивность будет страдать. Откажитесь от многозадачности Она вредит и продуктивности, и способности работать сосредоточенно. Знайте, что для вас важнее всего Говорите «нет» всему, что не соответствует вашим главным приоритетам. Определите их и стройте свой день в соответствии с ними, уделяя им основное внимание.

BLUETOOTH в Arch Linux

ДЛЯ РАБОТЫ С USB BLUETOOTH-МОДУЛЕМ в Arch Linux требуется установить пакет bluez. 1. Убедитесь, что ваш пакетный менеджер и база данных пакетов обновлены: ``` sudo pacman -Syu ``` 2. Установите bluez: ``` sudo pacman -S bluez ``` 3. Запустите демона Bluetooth и включите его автозагрузку: ``` sudo systemctl start bluetooth.service sudo systemctl enable bluetooth.service ``` 4. Перезагрузите компьютер. После этого ваш USB Bluetooth-модуль должен заработать в Arch Linux. Чтобы проверить, что он работает, выполните команду: ``` hciconfig ``` Она должна показать устройство Bluetooth с поддержкой Host Controller Interface (HCI). Если такой вывод есть, значит, ваш USB Bluetooth-модуль успешно подключен. УСТАНОВКА ЯДРА LIQUORIX KERNEL INSTALL Debian / Ubuntu / Arch: Install Script curl -s 'https://liquorix.net/install-liquorix.sh' | sudo bash ПОСМОТРЕТЬ ЛОГИ ОШИБОК ПРОГРАММ: journalctl -b -p 3 _COMM=steam или journalctl -xe ОБНОВЛЕНИЕ, ДОПОЛНЕНИЕ ЗЕРКАЛ: https://archlinux.org/mirrors/status/ nano /etc/pacman.d/mirrorlist После добавления обновить командой sudo pacman -Syu ФОТОШОП Для работы фотошопа требутся доп библиотеки в winetricks:

Arch после установки

Если не запускается оболочка, то зажимаем alt жмём f2 и ждём https://nobaraproject.org/ Магазин https://flathub.org/ Установка sudo dnf install flatpak flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo Bottles - wine flatpak install flathub com.usebottles.bottles Установка прав flatpak override --user --filesystem=/home/admin/windowsapps Крорбки flatpak install flathub org.gnome.Boxes Запустить flatpak run com.visualstudio.code Установленны список flatpak list -d --app --runtime Удалить flatpak uninstall telegram flatpak uninstall org.mozilla.firefox flatpak --user uninstall com.mojang.Minecraft flatpak --system uninstall com.mojang.Minecraft sudo dnf remove xbacklight dnf install timeshift Установить sudo dnf install firefox telegram timeshift htop mc nano neofetch gwenview micro wireguard-tools -y flatpak install flathub com.brave.Browser -y && flatpak install flathub com.visualstudio.code -y && flatpak install flathub com.notepadqq.Notepadqq -y && flatpak install flathub org.onlyoffice.desktopeditors -y && flatpak install flathub org.videolan.VLC -y && flatpak install flathub org.kde.krita -y && flatpak install flathub org.sqlitebrowser.sqlitebrowser -y && flatpak install flathub com.anydesk.Anydesk -y && flatpak install flathub org.filezillaproject.Filezilla -y Старые flatpak install flathub org.mozilla.firefox -y && // Быстрый просмотр картинок flatpak install flathub de.haeckerfelix.Fragments flatpak install flathub io.github.Figma_Linux.figma_linux flatpak install flathub com.sweethome3d.Sweethome3d flatpak install flathub com.github.bjaraujo.Bombermaaan flatpak install flathub com.obsproject.Studio flatpak install flathub uk.org.greenend.chiark.sgtatham.putty flatpak install flathub org.blender.Blender flatpak install flathub org.flameshot.Flameshot flatpak install flathub org.libretro.RetroArch flatpak install flathub org.ppsspp.PPSSPP // Вектор рисовалка flatpak install flathub org.inkscape.Inkscape // Схемы рисовалка flatpak install flathub com.jgraph.drawio.desktop // Игра с блоками Майн стрелялка flatpak install flathub jp.yvt.OpenSpades -y %Y-%m-%d %k:%M // Видеоредакторы shotcut kdenlive Горячие клавиши win p - на каком мониторе показывать win пробел - меж языками ctrl alt t - terminal ctrl alt стрелочки - рабочие столы Возня с драйверами на видюху sudo dnf remove nvidia sudo kroko-cli autoinstall // Показать все rpm -qa // Поиск по показам всех rpm -qa | grep nvidia525-core sudo dnf remove nvidia525-core.x86_64 sudo dnf search nvidia525-core sudo dnf install inxi nvidia525-core nvidia-settings -y inxi -G sudo kroko-cli get-gpus sudo kroko-cli best-driver sudo kroko-cli autoinstall

Кто такой умный человек?

Тот, кто может 1. Находить ответы на вопросы 2. Принимать эффективные решения 3. Предвидеть последствия

Photoshop online

php сжимаем изображения

<pre><?php ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); $text = '/upload/articles/53066/1673596122_594V.jpg /upload/articles/52994/1671542002_ZkJ7.jpg /upload/articles/52928/1670425735_3049.jpg /upload/articles/52928/1670425738_97P9.jpg /upload/articles/52931/1670427197_BE52.jpg /upload/articles/52928/1670425728_m3L7.jpg'; $text_webp = str_replace('.jpg', '.webp', $text); $links = explode("\n", $text); $links_webp = explode("\n", $text_webp); // print_r($links_webp); exit(); $imagePath = $_SERVER['DOCUMENT_ROOT'].$links[0]; $sourceImage = imagecreatefromjpeg($imagePath); //$sourceImage = imagecreatefrompng($imagePath); if ($sourceImage) { // Получаем ширину и высоту оригинального изображения $originalWidth = imagesx($sourceImage); $originalHeight = imagesy($sourceImage); // Устанавливаем максимальную ширину $maxWidth = 720; $newWidth = $originalWidth; $newHeight = $originalHeight; if ($originalWidth > $maxWidth) { $newWidth = $maxWidth; $newHeight = round($originalHeight * $maxWidth / $originalWidth); } // Создаем новое изображение с измененным размером $resizedImage = imagecreatetruecolor($newWidth, $newHeight); // Копируем и изменяем размер оригинального изображения в новое imagecopyresampled($resizedImage, $sourceImage, 0, 0, 0, 0, $newWidth, $newHeight, $originalWidth, $originalHeight); $outputPath = $_SERVER['DOCUMENT_ROOT'].$links_webp[0]; $quality = 80; if (file_exists($outputPath)) unlink($outputPath); imagewebp($resizedImage, $outputPath, $quality); imagedestroy($sourceImage); imagedestroy($resizedImage); echo 'good '.$outputPath.'<br>'; } else { echo 'NOT '.$outputPath.'<br>'; }

Сжать js через linux ubuntu консоль

sudo apt update sudo apt install nodejs sudo apt install npm sudo npm install uglify-js -g uglifyjs main.js -o main.min.js топ sudo npm install terser -g terser main.js -o main.min.js --compress --mangle --mangle-props npm install clean-css-cli -g cleancss -o output.min.css input.css Для сжатия JavaScript файлов через консоль Ubuntu, вы можете использовать утилиту uglifyjs. Убедитесь, что она установлена на вашей системе. Если она не установлена, вы можете установить её с помощью npm (Node.js Package Manager): Установите Node.js и npm, если они еще не установлены. Вы можете установить их с помощью следующих команд: sudo apt update sudo apt install nodejs sudo apt install npm Установите uglify-js глобально с помощью npm: sudo npm install uglify-js -g Теперь, когда uglifyjs установлен, вы можете использовать его для сжатия JavaScript файлов. Перейдите в каталог, содержащий ваши JS файлы, и выполните команду: uglifyjs yourfile.js -o yourfile.min.js Замените yourfile.js на имя вашего JavaScript файла, который вы хотите сжать, и yourfile.min.js на имя, которое вы хотите использовать для сжатой версии файла. После выполнения этой команды, у вас будет сжатая версия JavaScript файла с расширением .min.js в том же каталоге. Вы можете использовать эту сжатую версию в своем проекте.

Обновление Nodejs

Для обновления Node.js с версии 12.22.9 на более свежую версию в Ubuntu, вы можете воспользоваться утилитой n, которая упрощает управление версиями Node.js. Вот как это сделать: Установите n с помощью npm (если у вас его ещё нет): sudo npm install -g n Затем, используйте n для установки более свежей версии Node.js. Вы можете выбрать версию, которую хотите установить. Например, чтобы установить последнюю стабильную версию: sudo n stable Если вы хотите установить конкретную версию, например, Node.js 14: sudo n 14 После успешной установки новой версии Node.js, вы можете проверить, что версия была обновлена, выполнив: node -v Это должно показать новую версию Node.js. Обратите внимание, что после обновления версии Node.js, вам может потребоваться обновить глобальные npm-пакеты, которые вы установили ранее. Вы можете сделать это, выполнив npm update -g.

Как правильно завершать собеседования

Спасибо Вам что пришли, Мы вынуждены сейчас закончить собеседование, Мы посовещаемся, если придём к выводу, что ваша кандидатура нам подходит, то вышлем ещё тестовое задание

Переменные для cmd в windows

Как в windows сделать так, чтоб запуск был по короткой команде php ? C:\Users\Home\Downloads\php-8.2.10-nts-Win32-vs16-x64\php.exe main.php Чтобы сделать так, чтобы вы могли запускать PHP-скрипты в командной строке Windows с использованием короткой команды php, вам нужно добавить путь к исполняемому файлу PHP в системную переменную PATH. Вот как это сделать: Откройте "Панель управления" в Windows. Перейдите в раздел "Система и безопасность" (или "Система", в зависимости от версии Windows). Нажмите на "Система" (или "Дополнительные параметры системы") слева. В открывшемся окне выберите вкладку "Дополнительно". Нажмите кнопку "Переменные среды". В разделе "Системные переменные" найдите переменную "Path" и выберите её, затем нажмите "Изменить". В появившемся окне "Изменение системной переменной" нажмите "Новый" и введите путь к папке, где находится исполняемый файл PHP. Например, добавьте C:\Users\Home\Downloads\php-8.2.10-nts-Win32-vs16-x64\ в список переменных. Нажмите "ОК", чтобы закрыть все окна и сохранить изменения. Теперь вы можете запускать PHP-скрипты в командной строке, используя команду php: php main.php Теперь команда php будет выполнять скрипты, как вы описали в вашем вопросе.

Тест устройств

Тест камеры https://ru.webcamtests.com/ Тест микрофона https://webcammictest.com/ru/check-mic.html

Карта рынка акций

Linux создать ссылку

ln -s /sdcard/golang golang

Bash Linux

// Доступное место быстрый просмотр df -h (df -i для узлов, записи расположений файлов) // Узнать размер вес размер папки (s этой папки, h норм формат) du -hs /var/* | sort -hr du -hs /home du -h file.txt du -sh /var/www/joyeshop.ru/* du -sh / du -hd1 / // Переходы cd /var/www cd www cd .. // Что в папке ls // Где я pwd // Создать папку mkdir NAME // Удалить rm FOLDER -rf https://itproffi.ru/kak-uznat-razmer-papki-v-linux/ // Инфа о файле stat file.txt Архив sudo apt install zip unzip zip -r /path/to/files/* unzip archive.zip -d удалить файл из архива -r - рекурсивно обходить каталоги -0 - только архивировать, без сжатия -9 - наилучший степень сжатия -F - исправить zip файл -e - шифровать файлы zip -9 file.zip data-dump.sql Развернуть SQL mysql -u "root" -p"PASS" BDNAME --force < "/root/file.sql"

Самый умный 3

sql Добавить если нет

У скольких не хватает комментов SELECT COUNT(*) FROM articles WHERE publish = 'prod' AND id NOT IN (SELECT article_id FROM article_flag) Включить комменты не хватающим INSERT INTO article_flag (article_id, flag_id) SELECT id, 3 FROM articles WHERE publish = 'prod' AND id NOT IN (SELECT article_id FROM article_flag)

Самый умный GPT ИИ Ai

Переводчик EN RU

Google задачи

Какие необходимо сделать проекты, чтоб набраться опыта по golang?

Для набора опыта по Golang рекомендуется выполнить следующие проекты: 1. Создание веб-приложения: Разработайте простое приложение, используя фреймворк Golang, такой как Gin или Echo. Этот проект поможет вам понять основы маршрутизации HTTP, обработки запросов и создания REST API. 2. Система обработки очередей: Разработайте систему обработки очередей с использованием пакета RabbitMQ или Apache Kafka. Это позволит вам понять асинхронную обработку сообщений и распределение задач между различными воркерами. 3. Веб-скрапер: Разработайте программу, которая будет извлекать данные с веб-страниц и сохранять их в базу данных. Используйте пакеты goquery для извлечения данных и GORM для работы с базой данных. 4. Разработка CLI-инструмента: Создайте командную строку (CLI) инструмент, который будет выполнять операции взаимодействия с файловой системой или сетью. Вы можете использовать пакет cobra для создания интерфейса командной строки. 5. Микросервисная архитектура: Разработайте небольшое приложение, состоящее из нескольких микросервисов, которые взаимодействуют друг с другом с использованием протокола gRPC или REST API. Это позволит вам ознакомиться с архитектурой микросервисов и понять, как разделить функциональность приложения на отдельные компоненты. Эти проекты помогут вам применить и углубить ваши знания по Golang и познакомиться с некоторыми распространенными библиотеками и пакетами.

Ubuntu перезапустить

reboot LEMP > /var/log/nginx/error.log nano /var/log/nginx/error.log du -h /var/log/nginx/error.log > /var/log/nginx/access.log nano /var/log/nginx/access.log du -h /var/log/nginx/access.log > /var/log/php8.1-fpm.log nano /var/log/php8.1-fpm.log du -h /var/log/php8.1-fpm.log nano /etc/php/8.1/fpm/php.ini display_errors = On /etc/php/8.1/fpm/conf.d nano /etc/nginx/sites-enabled/joyeshop.ru.conf nano /etc/nginx/sites-enabled/armango.com.conf service nginx restart service php8.1-fpm restart service mysql restart чтоб увеличить количество php воркеров nano /etc/php/8.1/fpm/pool.d/www.conf pm.max_children поменял с 5 на 16 service php8.1-fpm restart

termux android fedora

start-fedora.sh #!/data/data/com.termux/files/usr/bin/bash cd $(dirname $0) ## unset LD_PRELOAD in case termux-exec is installed unset LD_PRELOAD command="proot" command+=" --kill-on-exit" command+=" --link2symlink" command+=" -0" command+=" -r fedora-fs" if [ -n "$(ls -A fedora-binds)" ]; then for f in fedora-binds/* ;do . $f done fi command+=" -b /dev" command+=" -b /proc" command+=" -b fedora-fs/root:/dev/shm" #command+=" -b /data/data/com.termux/files/home:/root" command+=" -b /sdcard" command+=" -w /root" command+=" /usr/bin/env -i" command+=" HOME=/root" command+=" PATH=/usr/local/sbin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/games:/usr/local/games" command+=" TERM=$TERM" command+=" LANG=ru_RU.UTF-8" #command+=" LANG=C.UTF-8" command+=" /bin/bash --login" com="$@" if [ -z "$1" ];then exec $command else $command -c "$com" fi start_vnc.sh #! /bin/bash rm -f /tmp/.X1-lock && rm -f /tmp/.X11-unix/X1 && vncserver :1 -geometry 1280x1280 #800x800 #1024x768 start_vnc_keyboard.sh #! /bin/bash rm -f /tmp/.X1-lock && rm -f /tmp/.X11-unix/X1 && vncserver :1 -geometry 2000x1024 #800x800 #1024x768 vncpasswd 127.0.0.1:5901

golang book 14

Записать в файл func SaveString(fileName string, text string) error { err := ioutil.WriteFile(filename, []byte(text), 0600) return err } ограничение области видимости через if if err := saveString("a.txt","hi"); err != nill { log.Fatal(err) } switch randIntn(3)+1 { case 1: fmt.Println() case 2: default: } он автоматом завершает текущий case если так не надо, то fallthrough utf8String := "бгж" len( длина в байтах для количества символов unicode/utf8 utf8.RuneCountInString( 535 segmentString := []rune("привет") newSegment:= segmentString[3:] обрезает первые 3 символа а если превращать в []bute( то не работает на рус буквах, так как они по 2байта в цикле может быть строка, она обработается по символам точнее по рунам буферизованные каналы channel := make(chan string, 3) 3 определяет размер буфера при отправке значение в буфере chanel <- "s" и горутина продолжает работать если буфер переполнен, то будет блокировка при извлечении ланных они так же по одному, начиная с первой отправки, ьудут приниматься http://headfirstgo.com/ https://go.dev/doc/effective_go

чем на golang отличается слайсы от массива?

В Go массивы и слайсы являются двумя разными типами данных, имеющими разные свойства и функциональность. Массивы в Go являются фиксированной длины последовательностью элементов одного типа. Длина массива задается при его объявлении и не может быть изменена в ходе выполнения программы. Адрес массива – адрес его нулевого элемента. Массивы в Go копируются при передаче в функцию или при присваивании другой переменной, поэтому любые изменения, сделанные внутри функции или в установленной переменной, не повлияют на исходный массив. Пример объявления массива: go var a [5]int // массив из 5 элементов типа int Слайс (срез) в Go является динамическим массивом, который представляет собой ссылку на последовательность элементов определенного типа. Длина слайса может быть изменена в ходе выполнения программы. Слайс содержит указатель на массив, длину и емкость (capacity). При добавлении элементов в слайс, если длина превышает емкость, будет создан новый массив с большей емкостью, элементы будут скопированы в новый массив, а старый массив будет уничтожен. Если слайс передается в функцию или присваивается другой переменной, копируется только сам слайс, а не его содержимое. Это означает, что любые изменения, сделанные внутри функции или в установленной переменной, будут отражены в исходном слайсе. Пример объявления слайса: go var s []int // слайс из элементов типа int Таким образом, основное отличие между массивами и слайсами в Go заключается в возможности изменять длину слайса, а также в том, что массивы копируются при присваивании, а слайсы – нет.

php Отображать все ошибки

<?php ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);

sql запрос на копирование структуры таблицы

sql запрос, который показывает, какой sql запрос необходим на создании такой же таблицы SHOW CREATE TABLE tableName;

golang book 13

480 html шаблоны формы отправки html/template 481 func check(err error) { if err != nil { log.Fatal(err) } view.html import "html/template" html, err := template.ParseFiles("view.html") запись содержимого в writer err := html.Execute(writer, nil) 485 text/template тоже самое, но более опасен text := "ttttttt" tmpl, err := template.New("test").Parse(text) err := tmpl.Execute(os.Stdout, nil) вместо записи в вывод браузера, записывает в вывод консоли os.Stdout работает как файл, но он сразу выводится count, err := os.Stdout.Write([]byte("hello")) {{}} tmpl, err := template.New("test").Parse("123{{.}}456") err := tmpl.Execute(os.Stdout, 42) условие в шаблонах "start{{if .}}123{{end}}555" "{{range .}}({{.}}){{end}}" выводит все элементы массива []string("do", "re","mi") Для структур "Name: {{.Name}}" так же можно условие {{if .Active}} чтение из файла записи 492 execute может передать только один аргумент, чтоб передать несколько, создавайте структуру потом поля структуры в шаблон ставятся так {{.count}} {{range .list}} {{end}} html, err := template.ParseFiles("index.html") data := myStruct{ name : "aaaa" } err := html.Execute(os.Stdout, data) 498 ввод данных в формах func createHandler(writer http.ResponseWriter, request *http.Request) { text := request.FormValue("inputName") _, err := writer.Write([]byte(text) } переписать код с 504 func createHandler(writer http.ResponseWriter, request *http.Request) { singature := request.FormValue("singature") options := os.O_WRONLY | os.O_APPEND | os.O_CREATE file, err := os.OpenFile("singatures.txt", options, os.FileMode(0600)) checkErr(err) _, err = fmt.Frintln(file, singature) checkErr(err) err = file.Close() checkErr(err) } при отправку данных на отдельной странице принимаем их, после делаем редирект 302 http.Redirect(writer, request, "/books", http.StatusFond) Переписать весь код 508 и 509 открыть файл go doc os OpenFile go doc os O_RDONLY func main() { file, err := os.OpenFile("file.txt", os.O_WRONLY, os.FileMode(0600)) checkErr(err) _, err = file.Write([]byte("text1\n")) checkErr(err) err = file.Close() checkErr(err) os.O_WRONLY переписать часть файла os.O_APPEND дописать в конце файла для просмотра двоичного представления данных fmt.Printf("%3d: %08b\n", 7, 7) побитовые операторы & | fmt.Printf("true && false == %t\n", true && false) fmt.Printf("%b & %b == %b\n", 0, 1, 0&1) fmt.Printf("%08b\n", 170) fmt.Printf("%08b\n", 15) fmt.Printf("%08b\n", 170&15) fmt.Println( os.O_RDONLY, os.O_WRONLY, os.O_RDWR, os.O_CREATE, os.O_APPEND ) они все инт 0,1,2,64,1024 fmt.Printf("%016b\n", os.O_CREATE|os.O_APPEND) надо использовать константы а не int, права и доступы 0 нет разрешений 1 исполнение 2 запись 3 запись и исполнение 4 чтение 5 чтение исполнение 6 запись и чтение 7 запись чтение исполнение - файл d каталог это в начале прав узнать какие права fileInfo, err := os.Stat("dir") checkErr(err) fmt.Println(fileInfo.Mode()) drwxr-xr-x для логов os.O_WRONLY | os.O_APPEND | os.O_CREATE можно проще os.Open os.Create они проще, чем os.OpenFile 530

Инвестиции видео

Зависимость зарплаты

Зарплата зависит от спроса, а не от сложности работы.. Часто зависит от пользы, которое вы даёте другим людям

Android APK

php пространство имён

Чтобы избежать конфликтов функций, которые находятся в разных файлах, можно использовать пространства имён (namespaces) в PHP. Пример использования пространств имён для этих двух файлов: В файле "update.php": php namespace MyNamespace1; function myFunction() { // Код функции } В файле "updateMinimal.php": php namespace MyNamespace2; function myFunction() { // Код функции } Теперь для использования этих функций необходимо указывать пространство имён, чтобы избежать конфликтов: php require($_SERVER['DOCUMENT_ROOT'].'/ajax/product_locations/update.php'); require($_SERVER['DOCUMENT_ROOT'].'/ajax/product_locations/updateMinimal.php'); $function1 = MyNamespace1\myFunction(); $function2 = MyNamespace2\myFunction(); Используя пространства имён, вы можете избежать конфликтов и явно указывать, какую функцию вы хотите использовать. Если хотите использовать в тех файлах глобальные переменные то new \mysqli(

Подключить модули modules js

import {app} from '/apps/modules/app.js?5' import {ajax} from '/apps/modules/ajax.js?5' import {telega} from '/apps/modules/telega.js?5' import {viewConsole} from '/apps/modules/viewConsole.js?5' import {searchWithError} from '/apps/modules/searchWithError.js?10' window.searchWithError = searchWithError Их так же можно подключать после import(`/gameMatch/rooms/${roomCode}/room.js`) .then(module => { gameMatch.rooms[roomCode] = module.room gameMatch.rooms[roomCode].main() })

Установка ядра LIQUORIX KERNEL INSTALL Debian / Ubuntu / Arch: Install Script

УСТАНОВКА ЯДРА LIQUORIX KERNEL INSTALL Debian / Ubuntu / Arch: Install Script curl -s 'https://liquorix.net/install-liquorix.sh' | sudo bash Обновите образ initramfs. Выполните команду: sudo mkinitcpio -p linux-lqx Для изменения ядра по умолчанию в загрузчике systemd на Arch Linux и обновления информации о ядрах, вы можете выполнить следующие действия: Выполните команду sudo nano /boot/loader/loader.conf, чтобы открыть файл конфигурации загрузчика. Добавьте следующие две строки в файл конфигурации: default @saved timeout 2 Убедитесь, что новое ядро установлен и находится в /boot. Откройте терминал и выполните команду sudo nano /boot/loader/entries/linux-lqx.conf, чтобы создать новый файл записи для нового ядра. В открывшемся редакторе nano введите следующий содержимое (вместо linux-lqx используйте фактическое имя ядра): title Arch Linux (linux-lqx) linux /vmlinuz-linux-lqx initrd /initramfs-linux-lqx.img options root=PARTUUID=4adaa716-5e38-4a68-ab3a-994e35cd8c52 rootflags=subvol=@ rw rootfstype=btrfs Здесь [UUID-корневого-раздела] должен быть заменен на UUID вашего корневого раздела (который можно узнать, выполнив команду lsblk -f). Перезагрузите систему, и при следующей загрузке будет предложено выбрать ядро. Теперь вы можете проверить, что новое ядро является ядром по умолчанию, выполнив команду uname -r. Кроме того, при необходимости можно отредактировать параметры загрузки ядра в файле /boot/loader/entries/<kernel-name>.conf, чтобы настроить его поведение при загрузке.

Перед покупкой бу телефона проверить

Перед покупкой бу телефона необходимо проверить следующие вещи: Состояние внешнего вида: проверьте наличие трещин, царапин, вмятин или других повреждений на корпусе телефона. Работоспособность экрана: убедитесь, что экран работает без дефектов, таких как пятна, полосы или неотзывчивые области. Кнопки регулировки громкости, включения выключения, что все нормально. Батарея: узнайте, как долго держится заряд батареи и проверьте ее общее состояние. Камера: протестируйте работу всех камер, включая фронтальную и заднюю, чтобы проверить их функциональность. Звук: проверьте наличие звука и работоспособность встроенных динамиков и наушников. Работа SIM-карты: убедитесь, что телефон правильно читает и распознает SIM-карту. Связь и сеть: проверьте работоспособность Wi-Fi, Bluetooth и сотовой связи. Операционная система: узнайте, какая версия операционной системы установлена на телефоне и проверьте возможность обновления до последней версии. Память: проверьте доступное место для хранения данных и узнайте, поддерживает ли телефон расширение памяти с помощью карты памяти. Проверка IMEI: сверьте IMEI телефона с базой украденных или заблокированных устройств, чтобы не попасть на украденный или незаконный телефон. При возможности, также рекомендуется сделать пробный звонок, отправить SMS-сообщение, проверить работу приложений и подключиться к интернету для полной проверки функциональности устройства.

modules workerSearchWithError.js

import {searchWithError} from '/apps/modules/searchWithError_test.js?8' self.addEventListener('message', function(event) { let data = event.data switch (data.cmd) { case 'setDatabase': searchWithError.setDatabase(data.base) break; case 'search': searchWithError.search(data.text, function(answer) { self.postMessage({ 'cmd': 'searchAnswer', 'base':answer }) }, data.options) break; default: self.postMessage('Unknown command') } }, false) /* //'worker': new Worker('/apps/modules/workerSearchWithError.js'), productAvailability.worker.postMessage({ 'cmd': 'setDatabase', 'base': base }) productAvailability.worker.postMessage({ 'cmd': 'search', 'text': text, 'options': {'full':true} }) productAvailability.worker.addEventListener('message', function(event) { console.log(event.data); }, false) */

modules viewConsole.js

window.viewConsole = { 'versionDate' : '2023-08-11', 'view' : () => { return `<textarea id="console_result" style="width:100%;height:280px;box-sizing: border-box;">result</textarea> <textarea id="console_input" style="width:100%;height:120px;box-sizing: border-box;">alert(5)</textarea> <center><button onClick="viewConsole.send()">Выполнить</button></center>` }, 'send' : () => { let console_input = document.getElementById('console_input') if (!console_input) return; eval(`let data = [${console_input.value}]; data = data[0]; if (typeof data === 'object') data = Object.keys(data).join("\\n"); let console_result = document.getElementById('console_result'); if (console_result) console_result.value += \`\\n\\n=== ${console_input.value} === \\n\` + data;` ) }, 'listenError' : () => { window.addEventListener('error', (event) => { viewConsole.error(event); } ); }, 'error' : (event) => { let error = event.error let data = { 'message': error.message, 'file': error.filename, 'line': error.lineno + ':' + error.colno, 'url':location.href, 'userAgent': navigator.userAgent //'time_at_start_page': Math.ceil(error.timeStamp/1000)+'s' } //JSON.stringify(data) let dataText = Object.keys(data).map((key) => `${key} : ${data[key]}`).join("\n") let console_result = document.getElementById('console_result') if (console_result) console_result.value += `\n\n=== error === \n${dataText}` } } export const viewConsole = window.viewConsole

modules telega.js

export const telega = { 'versionDate' : '2023-08-11', 'main': () => { if (!Telegram) return; // На всю высоту Telegram.WebApp.expand() }, 'user':{}, // Стандартная telegram авторизация 'onAuth' : (user) => { telega.user = user }, 'chatId': () => ( Telegram && Telegram.WebApp && Telegram.WebApp.initDataUnsafe && Telegram.WebApp.initDataUnsafe.user && Telegram.WebApp.initDataUnsafe.user.id ? Telegram.WebApp.initDataUnsafe.user.id : 0 ), }

modules searchWithError.js

/* Принцип: если было более 30% совпадений сочетаний 3 букв, то будет список отсортированный по количеству совпадений Если все сочетания 3х букв слова, которое ищем, нашлись в названии, которое 3 раза перевёрнуто по клавиатуре Привет Ghbdtn Privet Зкшмуе. Значит это то, что искали.. Иначе выставляем сколько % найденно. И потом сортируем по этим % */ export const searchWithError = { 'versionDate':'2023-08-10', 'minProbability' : 30, 'delay' : 300, 'quantityСharacters' : [2,3], 'data' : { 'list':[] }, /* Получение данных в виде ключ : текст для поиска так оно в более привычном и минимальном виде searchWithError.setDatabase({key:value, key:value}) */ 'setDatabase' : (data) => { searchWithError.data.list = Object.keys(data).map(key => ({ 'key': key, 'value': data[key], 'numbers': searchWithError.textToFullSetNumbers(data[key]) })) }, /* Преобразовать одно слово в соединении букв в виде цифр Привет [[п,р,и],[р,и,в],[и,в,е],[в,е,т]] [[1087,1088,1080],[1088,1080,1074],[1080,1074,1077],[1074,1077,1090]] [108710881080, 108810801074, 108010741077, 107410771090] Тоже самое и с 2 буквами и объединяет эти массивы */ 'textToSetNumbers' : (text) => { if (text === '') return new Set(); let characters = text.toLowerCase().split('') //new Set( return new Set( searchWithError.quantityСharacters.map(quantity => Array.from({ 'length' : (text.length + 1 - quantity) }, (_, i) => Number(characters.slice(i, i + quantity) .map(character => character.charCodeAt()) .join('') ) ) ) .flat() ) }, /* Вывести все варианты слова в виде массива Привет [привет, ghbdtn, privet, зкшмук] */ 'textToVariantsText' : (text) => { text = text.toLowerCase() return Array.from(new Set([ text, searchWithError.textRuToEn(text), // бруско => brusko searchWithError.textEnToRu(text), searchWithError.textRuKeyToEn(text), // икгылщ => brusko searchWithError.textEnKeyToRu(text), // hecrj => бруско searchWithError.textRuKeyToEn(searchWithError.textEnKeyToRu(text)), // hecrj => бруско => brusko searchWithError.textRuKeyToEn(searchWithError.textEnToRu(text)) //searchWithError.textEnToRu(searchWithError.textRuKeyToEn(text)) ])) }, /* Преобразовать слово варианты слов, варианты в цифры соединений букв и всё в один сет Привет [привет, ghbdtn, privet, зкшмук] Set(2) { 1, 2 } Set(2) { 1, 2 } Set(2) { 1, 2 } Set(7) { 1, 2, 3, 4, 5, 6, 7 } */ 'textToFullSetNumbers': (text) => { let variantsText = searchWithError.textToVariantsText(text) return variantsText .map(text => searchWithError.textToSetNumbers(text)) .reduce((result, set0) => { set0.forEach((value) => result.add(value)) return result; }, new Set()) }, 'lettersMapping': { 'RuToEn' : { 'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'ye', 'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'y', 'к': 'k', 'л': 'l', 'м': 'm', 'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u', 'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch', 'ш': 'sh', 'щ': 'shch', 'ъ': '', 'ы': 'y', 'ь': '', 'э': 'e', 'ю': 'yu', 'я': 'ya', ' ':' ' }, 'EnToRu': { 'a':'а', 'b':'б', 'c':'ц', 'd':'д', 'e':'е', 'f':'ф', 'g':'г', 'h':'х', 'i':'и', 'j':'ж', 'k':'к', 'l':'л', 'm':'м', 'n':'н', 'o':'о', 'p':'п', 'q':'к', 'r':'р', 's':'с', 't':'т', 'u':'у', 'v':'в', 'w':'в', 'x':'кс', 'y':'й', 'z':'з' }, 'EnKeyToRu' : { 'q':'й', 'w':'ц', 'e':'у', 'r':'к', 't':'е', 'y':'н', 'u':'г', 'i':'ш', 'o':'щ', 'p':'з', '[':'х', ']':'ъ', 'a':'ф', 's':'ы', 'd':'в', 'f':'а', 'g':'п', 'h':'р', 'j':'о', 'k':'л', 'l':'д', ';':'ж', '\'':'э', 'z':'я', 'x':'ч', 'c':'с', 'v':'м', 'b':'и', 'n':'т', 'm':'ь', ',':'б', '.':'ю', ' ':' ' }, 'RuKeyToEn': { ' ':' ', 'а':'f', 'б':',', 'в':'d', 'г':'u', 'д':'l', 'е':'t', 'ж':';', 'з':'p', 'и':'b', 'й':'q', 'к':'r', 'л':'k', 'м':'v', 'н':'y', 'о':'j', 'п':'g', 'р':'h', 'с':'c', 'т':'n', 'у':'e', 'ф':'a', 'х':'[', 'ц':'w', 'ч':'x', 'ш':'i', 'щ':'o', 'ъ':']', 'ы':'s', 'ь':'m', 'э':'\'', 'ю':'.', 'я':'z' }, 'textTo': (text, lettersMapping) => { return text .toLowerCase() .split('') //.filter(character => lettersMapping[character]) .map(character => lettersMapping[character] ? lettersMapping[character] : character) .join('') } }, // бруско => brusko 'textRuToEn': (text) => { return searchWithError.lettersMapping.textTo(text, searchWithError.lettersMapping.RuToEn) }, 'textEnToRu': (text) => { return searchWithError.lettersMapping.textTo(text, searchWithError.lettersMapping.EnToRu) }, // икгылщ => brusko 'textRuKeyToEn' : (text) => { return searchWithError.lettersMapping.textTo(text, searchWithError.lettersMapping.RuKeyToEn) }, // ,hecrj => бруско 'textEnKeyToRu' : (text) => { return searchWithError.lettersMapping.textTo(text, searchWithError.lettersMapping.EnKeyToRu) }, /* Основная функция поиска searchWithError.search('Привет', console.log) [key, key, key] searchWithError.search('Привет', console.log, {'full':true}) [[key: item], [key: item]] */ 'search' : (searchText = '', callback = console.log, options = {}) => { if (searchWithError.data.list.length === 0) { alert(`Нет базы для поиска, воспользуйтесь функцией searchWithError.setDatabase({key:value, key:value}), а после searchWithError.search()`) return; } // Таймер, чтоб не реагировал до тех пор, пока полностью не введут слово clearTimeout(searchWithError.timer) searchWithError.timer = setTimeout(() => { // При очистке поиска очищать результат if(searchText === '' || searchText.length < 3) { searchWithError.handleResponse(callback, [], options.arg) return; } // Текст для поиска переводим в массив let searchNumbers = searchWithError.textToSetNumbers(searchText) let searchNumbersArray = Array.from(searchNumbers) // Подсчёт процента, фильтр, сортировка let result = searchWithError.data.list .map(item => { // Количество доступных совпадений item.quantityСoincidencePossible = searchNumbersArray.length // Количество найденных совпадений item.quantityCoincidenceFound = searchNumbersArray.filter(number => item.numbers.has(number)).length // Процент найденных совпадений // Math.floor( item.percentCoincidence = item.quantityCoincidenceFound * 100 / item.quantityСoincidencePossible return item }) // Оставляем с нормальным процентом .filter(item => item.percentCoincidence >= searchWithError.minProbability) // Сортируем по количеству найденных совпадений .sort((item0, item1) => item0.quantityCoincidenceFound == item1.quantityCoincidenceFound ? 0 : (item0.quantityCoincidenceFound < item1.quantityCoincidenceFound ? 1 : -1) ) // Если задано количество, то оставляем нужное if (options.quantity) result = result .filter((_, index) => index < options.quantity) // Полный вывод в виде масивов [[key: item], [key: item]] if (options.full) result = result.map(item => { item.variants = searchWithError.textToVariantsText(item.value) return [item.key, item] }) else // Обычный вывод в виде масивов ключей [key, key, key] result = result.map(item => item.key) searchWithError.handleResponse(callback, result, options.arg) }, searchWithError.delay) }, // Обработка ответа 'handleResponse' : (callback = console.log, data, arg) => { if (data === undefined) callback() else if (arg === undefined) callback(data) else callback(data, arg) } }

modules oldAjax.js

export const oldAjax = { 'ajax' : function(url, data, fun_callback, fun_arg) { if (!fun_callback) fun_callback = console.log; var request = new XMLHttpRequest(); request.open('POST', url, true); request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); if (!data) request.send(); else request.send(Object.keys(data).map(function(key) { return encodeURIComponent(key) + '=' + encodeURIComponent(data[key]); }).join('&')); request.onreadystatechange = function() { if (request.status !== 200) console.log(request.status + ': ' + request.statusText); else if(request.readyState !== 4 || !('responseText' in request)) return false; else if (fun_arg === undefined) fun_callback(request.responseText); else fun_callback(request.responseText, fun_arg); }; }, 'ajax_json' : function(url, data, fun_callback, fun_arg) { if (!fun_callback) fun_callback = console.log; var request = new XMLHttpRequest(); request.open('POST', url, true); request.setRequestHeader('Content-type', 'application/json'); request.send(JSON.stringify(data)); request.onreadystatechange = function() { if (request.status !== 200) console.log(request.status + ': ' + request.statusText); else if(request.readyState !== 4 || !('responseText' in request)) return false; else { var result = {}; try { result = JSON.parse(request.responseText); } catch(e) { console.log(['JSON [X]', e, request.responseText]); } if (fun_arg === undefined) fun_callback(result); else fun_callback(result, fun_arg); } } }, 'ajax_type' : function(type, data, fun_callback, fun_arg) { if (typeof data === 'undefined') data = {}; data.type = type; oldAjax.ajax_json(oldAjax.ajax_url, data, fun_callback, fun_arg); }, 'ajax_with_files' : function(type, data, input_file, fun_callback, fun_arg) { data.type = type; if (!fun_callback) fun_callback = console.log; var request = new XMLHttpRequest(); request.open('POST', oldAjax.ajax_url, true); //request.setRequestHeader('Content-type', 'application/json'); var form_data = new FormData(); form_data.append('data', JSON.stringify(data)); if ('0' in input_file.files) form_data.append('file', input_file.files[0], input_file.files[0].name); // input_file.files.length request.send(form_data); request.onreadystatechange = function() { if (request.status != 200) console.log(request.status + ': ' + request.statusText); else if(request.readyState !== 4) return false; else { var result = {}; try { result = JSON.parse(request.responseText); } catch(e) { console.log(['JSON [X]', e, request.responseText]); } if (fun_arg === undefined) fun_callback(result); else fun_callback(result, fun_arg); } } } }

modules cookie.js

export const cookie = { 'versionDate' : '2023-08-11', 'enabled' : navigator.cookieEnabled, 'set' : (key, value) => { value = value.replace("\n\n", ' '); value = value.replace("\n", ' '); var date_end = new Date(); date_end.setFullYear(date_end.getFullYear() + 7); document.cookie = encodeURIComponent(key) + '=' + encodeURIComponent(value) + '; ' + (window.location.protocol === 'https:' ? 'SameSite=None; Secure; ' : '') + 'path=/; domain=' + window.location.host + '; expires=' + date_end.toUTCString(); }, 'get' : (key) => { key = encodeURIComponent(key); var matches = document.cookie.match(new RegExp( "(?:^|; )" + key.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : undefined; }, 'remove' : (key) => { key = encodeURIComponent(key); var date_end = new Date(0); document.cookie = key + '=; SameSite=None; Secure; path=/; domain=.' + window.location.host + '; expires=' + date_end.toUTCString(); }, 'clear' : () => { var array_cookie = document.cookie.split(';'); var name = ''; while (name = array_cookie.pop()) app.cookie.del((name.split('=')[0]).trim()); }, 'show' : () => { console.log(document.cookie.split(';').map(function(value) { return value.split('=').map(function(value1) { return value1.trim(); }).join(' = '); }).join("\n\n")); } }

modules app.js

export const app = { 'versionDate' : '2023-08-11', 'show' : (text = 'Hello', id = 'app') => { let element = document.getElementById(id) if (element) element.innerHTML = text }, 'stringToInt' : (text) => { text = String(text) text = parseInt( text.replace(/\D+/g, '') ) if(Number.isNaN(text)) text = 0 return text }, 'focusElementById' : (id) => { let element = document.getElementById(id) if (element) element.focus() }, 'jsonToObject' : (jsonString = '{}') => { try { return JSON.parse(jsonString) } catch (error) { console.log(['JSON X', error, jsonString]) } return {} }, 'objectToJson' : (object = {}) => { return JSON.stringify(object) }, 'windowOnLoadAdd' : (event) => { if (window.onload) window.onload = window.onload + event else window.onload = event } }

modules ajax.js

export const ajax = { 'versionDate' : '2023-08-11', //'test':true, 'handleResponse' : (callback = console.log, data, arg) => { if (data === undefined) callback() else if (arg === undefined) callback(data) else callback(data, arg) }, 'json' : (url, data = {}, callback = console.log, arg) => { if (!url) throw new Error('URL are required.') fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => { if (!response.ok) throw new Error(response.status + ' : ' + response.statusText) //if (ajax.test) console.log(response.text()) return response.json() }) .then(responseJson => { ajax.handleResponse(callback, responseJson, arg) }) .catch(error => { console.error(error) }); }, 'getText' : (url, callback = console.log, arg) => { if (!url) throw new Error('URL are required.') fetch(url) .then(response => response.text()) .then(text => { ajax.handleResponse(callback, text, arg) }) .catch(error => { console.error(error) }) } } //window.ajax = ajax

Реклама с яндекса

arch linux зеркала

Зеркала Позже обработаю -- ## Belarus Server = http://mirror.datacenter.by/pub/archlinux/$repo/os/$arch ## Belarus Server = http://ftp.byfly.by/pub/archlinux/$repo/os/$arch ## Canada Server = https://mirror2.evolution-host.com/archlinux/$repo/os/$arch ## Canada Server = https://arch.mirror.winslow.cloud/$repo/os/$arch ## Canada Server = https://mirror.csclub.uwaterloo.ca/archlinux/$repo/os/$arch ## Canada Server = https://mirror.quantum5.ca/archlinux/$repo/os/$arch ## Canada Server = https://mirror.xenyth.net/archlinux/$repo/os/$arch ## Canada Server = https://mirror.0xem.ma/arch/$repo/os/$arch ## Canada Server = https://mirror.scd31.com/arch/$repo/os/$arch ## Canada Server = http://mirror.0xem.ma/arch/$repo/os/$arch ## Canada Server = http://mirror.its.dal.ca/archlinux/$repo/os/$arch ## Canada Server = http://mirror.xenyth.net/archlinux/$repo/os/$arch ## Canada Server = http://mirror2.evolution-host.com/archlinux/$repo/os/$arch ## Canada Server = http://mirror.csclub.uwaterloo.ca/archlinux/$repo/os/$arch ## Canada Server = http://mirror.scd31.com/arch/$repo/os/$arch ## Canada Server = http://mirror.quantum5.ca/archlinux/$repo/os/$arch ## Canada Server = http://archlinux.mirror.rafal.ca/$repo/os/$arch ## France Server = https://mirror.cyberbits.eu/archlinux/$repo/os/$arch ## France Server = https://archmirror.hogwarts.fr/$repo/os/$arch ## France Server = https://mirror.ibakerserver.pt/Arch/$repo/os/$arch ## France Server = https://mirrors.gandi.net/archlinux/$repo/os/$arch ## France Server = https://archlinux.mailtunnel.eu/$repo/os/$arch ## France Server = https://mirroir.labhouse.fr/arch/$repo/os/$arch ## France Server = https://mirrors.eric.ovh/arch/$repo/os/$arch ## France Server = https://mirror.oldsql.cc/archlinux/$repo/os/$arch ## France Server = https://mirror.theo546.fr/archlinux/$repo/os/$arch ## France Server = https://mirrors.slaanesh.org/archlinux/$repo/os/$arch ## France Server = https://mirror.spaceint.fr/archlinux/$repo/os/$arch ## France Server = https://mirror.thekinrar.fr/archlinux/$repo/os/$arch ## France Server = https://mirror.wormhole.eu/archlinux/$repo/os/$arch ## France Server = https://mirrors.celianvdb.fr/archlinux/$repo/os/$arch ## France Server = https://arch.yourlabs.org/$repo/os/$arch ## France Server = http://archlinux.mirrors.ovh.net/archlinux/$repo/os/$arch ## France Server = http://mirrors.gandi.net/archlinux/$repo/os/$arch ## France Server = http://mirroir.labhouse.fr/arch/$repo/os/$arch ## France Server = http://mirrors.standaloneinstaller.com/archlinux/$repo/os/$arch ## France Server = http://mirror.theo546.fr/archlinux/$repo/os/$arch ## France Server = http://archlinux.mailtunnel.eu/$repo/os/$arch ## France Server = http://archmirror.hogwarts.fr/$repo/os/$arch ## France Server = http://mir.archlinux.fr/$repo/os/$arch ## France Server = http://mirror.spaceint.fr/archlinux/$repo/os/$arch ## France Server = http://mirror.archlinux.ikoula.com/archlinux/$repo/os/$arch ## France Server = http://mirror.lastmikoi.net/archlinux/$repo/os/$arch ## France Server = http://ftp.u-strasbg.fr/linux/distributions/archlinux/$repo/os/$arch ## France Server = http://arch.yourlabs.org/$repo/os/$arch ## France Server = http://mirrors.celianvdb.fr/archlinux/$repo/os/$arch ## France Server = http://mirror.cyberbits.eu/archlinux/$repo/os/$arch ## France Server = http://archlinux.datagr.am/$repo/os/$arch ## France Server = http://mirror.oldsql.cc/archlinux/$repo/os/$arch ## Germany Server = https://mirror.selfnet.de/archlinux/$repo/os/$arch ## Germany Server = https://mirror.f4st.host/archlinux/$repo/os/$arch ## Germany Server = https://de.arch.mirror.kescher.at/$repo/os/$arch ## Germany Server = https://ftp.spline.inf.fu-berlin.de/mirrors/archlinux/$repo/os/$arch ## Germany Server = https://os.codefionn.eu/archlinux/$repo/os/$arch ## Germany Server = https://ftp.wrz.de/pub/archlinux/$repo/os/$arch ## Germany Server = https://archlinux.thaller.ws/$repo/os/$arch ## Germany Server = https://mirror.mikrogravitation.org/archlinux/$repo/os/$arch ## Germany Server = https://mirrors.n-ix.net/archlinux/$repo/os/$arch ## Germany Server = https://arch.jensgutermuth.de/$repo/os/$arch ## Germany Server = https://mirror.bethselamin.de/$repo/os/$arch ## Germany Server = https://mirror.kumi.systems/archlinux/$repo/os/$arch ## Germany Server = https://mirrors.xtom.de/archlinux/$repo/os/$arch ## Germany Server = https://archlinux.homeinfo.de/$repo/os/$arch ## Germany Server = https://mirrors.janbruckner.de/archlinux/$repo/os/$arch ## Germany Server = https://mirrors.niyawe.de/archlinux/$repo/os/$arch ## Germany Server = https://mirror.sunred.org/archlinux/$repo/os/$arch ## Germany Server = https://mirror.moson.org/arch/$repo/os/$arch ## Germany Server = https://ftp.halifax.rwth-aachen.de/archlinux/$repo/os/$arch ## Germany Server = https://mirror.metalgamer.eu/archlinux/$repo/os/$arch ## Germany Server = https://arch.unixpeople.org/$repo/os/$arch ## Germany Server = https://mirror.lcarilla.de/archlinux/$repo/os/$arch ## Germany Server = https://mirror.fra10.de.leaseweb.net/archlinux/$repo/os/$arch ## Germany Server = https://mirror.wtnet.de/archlinux/$repo/os/$arch ## Germany Server = https://archlinux.richard-neumann.de/$repo/os/$arch ## Germany Server = https://mirror.pseudoform.org/$repo/os/$arch ## Germany Server = https://packages.oth-regensburg.de/archlinux/$repo/os/$arch ## Germany Server = https://mirror.dogado.de/archlinux/$repo/os/$arch ## Germany Server = https://appuals.com/archlinux/$repo/os/$arch ## Germany Server = https://arch.mirror.zachlge.org/$repo/os/$arch ## Germany Server = https://mirror.pagenotfound.de/archlinux/$repo/os/$arch ## Germany Server = https://mirror.netcologne.de/archlinux/$repo/os/$arch ## Germany Server = https://mirror.iusearchbtw.nl/$repo/os/$arch ## Germany Server = https://ftp.agdsn.de/pub/mirrors/archlinux/$repo/os/$arch ## Germany Server = https://mirror.ubrco.de/archlinux/$repo/os/$arch ## Germany Server = https://mirror.23m.com/archlinux/$repo/os/$arch ## Germany Server = https://dist-mirror.fem.tu-ilmenau.de/archlinux/$repo/os/$arch ## Germany Server = https://mirror.clientvps.com/archlinux/$repo/os/$arch ## Germany Server = https://ftp.fau.de/archlinux/$repo/os/$arch ## Germany Server = https://mirror.cmt.de/archlinux/$repo/os/$arch ## Germany Server = https://pkg.fef.moe/archlinux/$repo/os/$arch ## Germany Server = https://arch.phinau.de/$repo/os/$arch ## Germany Server = http://ftp.uni-hannover.de/archlinux/$repo/os/$arch ## Germany Server = http://archlinux.mirror.iphh.net/$repo/os/$arch ## Germany Server = http://mirror.23m.com/archlinux/$repo/os/$arch ## Germany Server = http://ftp.gwdg.de/pub/linux/archlinux/$repo/os/$arch ## Germany Server = http://ftp.fau.de/archlinux/$repo/os/$arch ## Germany Server = http://archlinux.thaller.ws/$repo/os/$arch ## Germany Server = http://mirror.sunred.org/archlinux/$repo/os/$arch ## Germany Server = http://mirror.metalgamer.eu/archlinux/$repo/os/$arch ## Germany Server = http://mirror.selfnet.de/archlinux/$repo/os/$arch ## Germany Server = http://mirrors.janbruckner.de/archlinux/$repo/os/$arch ## Germany Server = http://mirrors.xtom.de/archlinux/$repo/os/$arch ## Germany Server = http://mirror.mikrogravitation.org/archlinux/$repo/os/$arch ## Germany Server = http://mirrors.niyawe.de/archlinux/$repo/os/$arch ## Germany Server = http://mirror.cmt.de/archlinux/$repo/os/$arch ## Germany Server = http://arch.jensgutermuth.de/$repo/os/$arch ## Germany Server = http://mirror.fra10.de.leaseweb.net/archlinux/$repo/os/$arch ## Germany Server = http://ftp.agdsn.de/pub/mirrors/archlinux/$repo/os/$arch ## Germany Server = http://ftp-stud.hs-esslingen.de/pub/Mirrors/archlinux/$repo/os/$arch ## Germany Server = http://archlinux.honkgong.info/$repo/os/$arch ## Germany Server = http://mirror.netcologne.de/archlinux/$repo/os/$arch ## Germany Server = http://mirror.lcarilla.de/archlinux/$repo/os/$arch ## Germany Server = http://os.codefionn.eu/archlinux/$repo/os/$arch ## Germany Server = http://arch.mirror.zachlge.org/$repo/os/$arch ## Germany Server = http://mirror.united-gameserver.de/archlinux/$repo/os/$arch ## Germany Server = http://packages.oth-regensburg.de/archlinux/$repo/os/$arch ## Germany Server = http://mirror.moson.org/arch/$repo/os/$arch ## Germany Server = http://ftp.hosteurope.de/mirror/ftp.archlinux.org/$repo/os/$arch ## Germany Server = http://artfiles.org/archlinux.org/$repo/os/$arch ## Germany Server = http://ftp.halifax.rwth-aachen.de/archlinux/$repo/os/$arch ## Germany Server = http://mirror.clientvps.com/archlinux/$repo/os/$arch ## Germany Server = http://arch.phinau.de/$repo/os/$arch ## Germany Server = http://ftp.uni-bayreuth.de/linux/archlinux/$repo/os/$arch ## Germany Server = http://ftp.spline.inf.fu-berlin.de/mirrors/archlinux/$repo/os/$arch ## Germany Server = http://mirror.pagenotfound.de/archlinux/$repo/os/$arch ## Germany Server = http://mirror.f4st.host/archlinux/$repo/os/$arch ## Germany Server = http://mirror.kumi.systems/archlinux/$repo/os/$arch ## Germany Server = http://ftp.uni-kl.de/pub/linux/archlinux/$repo/os/$arch ## Germany Server = http://linux.rz.rub.de/archlinux/$repo/os/$arch ## Germany Server = http://mirror.wtnet.de/archlinux/$repo/os/$arch ## Germany Server = http://ftp.wrz.de/pub/archlinux/$repo/os/$arch ## Germany Server = http://mirrors.n-ix.net/archlinux/$repo/os/$arch ## Germany Server = http://ftp.tu-chemnitz.de/pub/linux/archlinux/$repo/os/$arch ## Germany Server = http://mirror.ubrco.de/archlinux/$repo/os/$arch ## Russia Server = https://mirror.truenetwork.ru/archlinux/$repo/os/$arch ## Russia Server = https://mirror.yal.sl-chat.ru/archlinux/$repo/os/$arch ## Russia Server = https://mirror.kamtv.ru/archlinux/$repo/os/$arch ## Russia Server = https://mirror.yandex.ru/archlinux/$repo/os/$arch ## Russia Server = https://mirror.nw-sys.ru/archlinux/$repo/os/$arch ## Russia Server = https://mirror.surf/archlinux/$repo/os/$arch ## Russia Server = https://mirror.kpfu.ru/archlinux/$repo/os/$arch ## Russia Server = http://mirror.kamtv.ru/archlinux/$repo/os/$arch ## Russia Server = http://mirror.surf/archlinux/$repo/os/$arch ## Russia Server = http://mirror.yandex.ru/archlinux/$repo/os/$arch ## Russia Server = http://mirrors.powernet.com.ru/archlinux/$repo/os/$arch ## Russia Server = http://mirror.nw-sys.ru/archlinux/$repo/os/$arch ## Russia Server = http://mirror.truenetwork.ru/archlinux/$repo/os/$arch ## Russia Server = http://mirror.kpfu.ru/archlinux/$repo/os/$arch ## United States Server = https://mirrors.ocf.berkeley.edu/archlinux/$repo/os/$arch ## United States Server = https://mirror.umd.edu/archlinux/$repo/os/$arch ## United States Server = https://repo.ialab.dsu.edu/archlinux/$repo/os/$arch ## United States Server = https://mirror.wdc1.us.leaseweb.net/archlinux/$repo/os/$arch ## United States Server = https://mirrors.radwebhosting.com/archlinux/$repo/os/$arch ## United States Server = https://ftp.osuosl.org/pub/archlinux/$repo/os/$arch ## United States Server = https://mirror.mia11.us.leaseweb.net/archlinux/$repo/os/$arch ## United States Server = https://iad.mirror.rackspace.com/archlinux/$repo/os/$arch ## United States Server = https://arlm.tyzoid.com/$repo/os/$arch ## United States Server = https://mirrors.kernel.org/archlinux/$repo/os/$arch ## United States Server = https://mirror.theash.xyz/arch/$repo/os/$arch ## United States Server = https://mirror.sfo12.us.leaseweb.net/archlinux/$repo/os/$arch ## United States Server = https://opencolo.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = https://coresite.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = https://ridgewireless.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = https://volico.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = https://ord.mirror.rackspace.com/archlinux/$repo/os/$arch ## United States Server = https://arch.mirror.ivo.st/$repo/os/$arch ## United States Server = https://southfront.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = https://mirrors.sonic.net/archlinux/$repo/os/$arch ## United States Server = https://plug-mirror.rcac.purdue.edu/archlinux/$repo/os/$arch ## United States Server = https://mirror.hackingand.coffee/arch/$repo/os/$arch ## United States Server = https://nnenix.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = https://mirrors.bloomu.edu/archlinux/$repo/os/$arch ## United States Server = https://mirrors.vectair.net/archlinux/$repo/os/$arch ## United States Server = https://mirrors.lug.mtu.edu/archlinux/$repo/os/$arch ## United States Server = https://mirror.phx1.us.spryservers.net/archlinux/$repo/os/$arch ## United States Server = https://dfw.mirror.rackspace.com/archlinux/$repo/os/$arch ## United States Server = https://mirrors.rit.edu/archlinux/$repo/os/$arch ## United States Server = https://ziply.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = https://codingflyboy.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = https://mirror.lty.me/archlinux/$repo/os/$arch ## United States Server = https://zxcvfdsa.com/arch/$repo/os/$arch ## United States Server = https://mirror.tmmworkshop.com/archlinux/$repo/os/$arch ## United States Server = https://arch.hu.fo/archlinux/$repo/os/$arch ## United States Server = https://mirror2.sandyriver.net/pub/archlinux/$repo/os/$arch ## United States Server = https://mirror.stephanie.is/archlinux/$repo/os/$arch ## United States Server = https://iad.mirrors.misaka.one/archlinux/$repo/os/$arch ## United States Server = https://m.lqy.me/arch/$repo/os/$arch ## United States Server = https://nocix.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = https://mirror.clarkson.edu/archlinux/$repo/os/$arch ## United States Server = https://uvermont.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = https://ohioix.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = https://forksystems.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = https://america.mirror.pkgbuild.com/$repo/os/$arch ## United States Server = https://irltoolkit.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = https://mirror.adectra.com/archlinux/$repo/os/$arch ## United States Server = https://mirrors.mit.edu/archlinux/$repo/os/$arch ## United States Server = https://mirror.fcix.net/archlinux/$repo/os/$arch ## United States Server = https://mirror.arizona.edu/archlinux/$repo/os/$arch ## United States Server = https://archmirror1.octyl.net/$repo/os/$arch ## United States Server = https://mirror.rackspace.com/archlinux/$repo/os/$arch ## United States Server = https://mirror.dal10.us.leaseweb.net/archlinux/$repo/os/$arch ## United States Server = https://mirrors.xtom.com/archlinux/$repo/os/$arch ## United States Server = https://mnvoip.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = https://arch.mirror.constant.com/$repo/os/$arch ## United States Server = http://mirror.wdc1.us.leaseweb.net/archlinux/$repo/os/$arch ## United States Server = http://mirror.rackspace.com/archlinux/$repo/os/$arch ## United States Server = http://mirrors.lug.mtu.edu/archlinux/$repo/os/$arch ## United States Server = http://uvermont.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = http://mirror.dal10.us.leaseweb.net/archlinux/$repo/os/$arch ## United States Server = http://arch.hu.fo/archlinux/$repo/os/$arch ## United States Server = http://arlm.tyzoid.com/$repo/os/$arch ## United States Server = http://mirror.fossable.org/archlinux/$repo/os/$arch ## United States Server = http://mirrors.xmission.com/archlinux/$repo/os/$arch ## United States Server = http://mirror.phx1.us.spryservers.net/archlinux/$repo/os/$arch ## United States Server = http://mnvoip.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = http://mirror.umd.edu/archlinux/$repo/os/$arch ## United States Server = http://forksystems.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = http://mirrors.radwebhosting.com/archlinux/$repo/os/$arch ## United States Server = http://southfront.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = http://iad.mirror.rackspace.com/archlinux/$repo/os/$arch ## United States Server = http://mirrors.cat.pdx.edu/archlinux/$repo/os/$arch ## United States Server = http://mirrors.kernel.org/archlinux/$repo/os/$arch ## United States Server = http://wcbmedia.io:8000/$repo/os/$arch ## United States Server = http://mirror.stephanie.is/archlinux/$repo/os/$arch ## United States Server = http://mirrors.advancedhosters.com/archlinux/$repo/os/$arch ## United States Server = http://mirror.mia11.us.leaseweb.net/archlinux/$repo/os/$arch ## United States Server = http://mirrors.ocf.berkeley.edu/archlinux/$repo/os/$arch ## United States Server = http://mirrors.rutgers.edu/archlinux/$repo/os/$arch ## United States Server = http://ohioix.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = http://mirror.metrocast.net/archlinux/$repo/os/$arch ## United States Server = http://mirror.arizona.edu/archlinux/$repo/os/$arch ## United States Server = http://distro.ibiblio.org/archlinux/$repo/os/$arch ## United States Server = http://mirrors.sonic.net/archlinux/$repo/os/$arch ## United States Server = http://opencolo.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = http://iad.mirrors.misaka.one/archlinux/$repo/os/$arch ## United States Server = http://mirrors.vectair.net/archlinux/$repo/os/$arch ## United States Server = http://mirror.math.princeton.edu/pub/archlinux/$repo/os/$arch ## United States Server = http://mirror.vtti.vt.edu/archlinux/$repo/os/$arch ## United States Server = http://mirror.siena.edu/archlinux/$repo/os/$arch ## United States Server = http://dfw.mirror.rackspace.com/archlinux/$repo/os/$arch ## United States Server = http://volico.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = http://ziply.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = http://mirror.cs.pitt.edu/archlinux/$repo/os/$arch ## United States Server = http://mirrors.bloomu.edu/archlinux/$repo/os/$arch ## United States Server = http://ridgewireless.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = http://mirrors.xtom.com/archlinux/$repo/os/$arch ## United States Server = http://nnenix.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = http://mirrors.rit.edu/archlinux/$repo/os/$arch ## United States Server = http://irltoolkit.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = http://repo.ialab.dsu.edu/archlinux/$repo/os/$arch ## United States Server = http://nocix.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = http://ftp.osuosl.org/pub/archlinux/$repo/os/$arch ## United States Server = http://mirror.lty.me/archlinux/$repo/os/$arch ## United States Server = http://mirrors.gigenet.com/archlinux/$repo/os/$arch ## United States Server = http://mirror.sfo12.us.leaseweb.net/archlinux/$repo/os/$arch ## United States Server = http://arch.mirror.constant.com/$repo/os/$arch ## United States Server = http://plug-mirror.rcac.purdue.edu/archlinux/$repo/os/$arch ## United States Server = http://mirror.fcix.net/archlinux/$repo/os/$arch ## United States Server = http://ord.mirror.rackspace.com/archlinux/$repo/os/$arch ## United States Server = http://mirrors.mit.edu/archlinux/$repo/os/$arch ## United States Server = http://mirror.adectra.com/archlinux/$repo/os/$arch ## United States Server = http://mirrors.acm.wpi.edu/archlinux/$repo/os/$arch ## United States Server = http://mirror.cs.vt.edu/pub/ArchLinux/$repo/os/$arch ## United States Server = http://coresite.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = http://codingflyboy.mm.fcix.net/archlinux/$repo/os/$arch ## United States Server = http://archmirror1.octyl.net/$repo/os/$arch ## United States Server = http://www.gtlib.gatech.edu/pub/archlinux/$repo/os/$arch ## United States Server = http://mirror.clarkson.edu/archlinux/$repo/os/$arch ## United States Server = http://mirror.hackingand.coffee/arch/$repo/os/$arch ## United States Server = http://repo.miserver.it.umich.edu/archlinux/$repo/os/$arch ## Worldwide Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch --

Golang ютуб видео2

как загрузить файл через php на github Именно php кодом?

GitHub не предоставляет специального API для загрузки файлов через PHP, однако вы можете использовать API GitHub для создания файла в репозитории. Для загрузки файла на GitHub с помощью PHP, вам потребуется выполнить следующие шаги: 1. Зарегистрируйтесь на GitHub и создайте репозиторий, в котором будете загружать файлы. 2. Получите личный токен доступа для доступа к API GitHub. Для этого: - Войдите в свой аккаунт GitHub. - Нажмите на аватар вашего профиля в правом верхнем углу и выберите "Settings" (Настройки). - В боковой панели выберите "Developer settings" (Настройки разработчика). - Перейдите на страницу личных токенов Personal access tokens (classic) или создайте новый токен. - Укажите необходимые права (например, repo для доступа к репозиториям) и сгенерируйте токен. - Скопируйте сгенерированный токен – он понадобится вам для отправки запросов API. 3. Создайте PHP-скрипт для загрузки файла на GitHub. Вот пример кода: <?php $githubUsername = ''; $githubToken = ''; $githubRepo = ''; $fileName = 'testFile4.txt'; // 'folder/testFile4.txt'; $fileContents = 'hi3'; $commitMessage = 'PHP Script update '.date('Y-m-d H:i:s'); $options = [ 'http' => [ 'header' => "Content-Type: application/json\r\n". "Authorization: token $githubToken\r\n" . "User-Agent: PHP Script/1.0\r\n" . "Accept: application/vnd.github+json\r\n", 'method' => 'PUT', 'content' => json_encode([ 'message' => $commitMessage, 'content' => base64_encode($fileContents) ]) ] ]; $context = stream_context_create($options); $result = file_get_contents("https://api.github.com/repos/$githubUsername/$githubRepo/contents/$fileName", false, $context); $response = json_decode($result, true); if (isset($response['content']['download_url'])) { echo "Файл успешно загружен: " . $response['content']['download_url']; } else { echo "Ошибка при загрузке файла."; } Внимание! Убедитесь, что ваш личный токен доступа сохраняется в безопасности и не публикуется нигде – он дает полный доступ к ваши репозиториям GitHub. Используя этот код, вы сможете загрузить файл с заданным именем в указанный репозиторий на GitHub. Будьте уверены, что указали правильные значения для $githubUsername, $githubRepo и $fileName. Учтите, что этот код использует функцию file_get_contents(), которая может быть отключена в определенных серверных конфигурациях. Если это так, вам придется использовать другой метод отправки запросов к API GitHub, например, cURL. Для изменения, под 'content' => base64 добавляем 'sha' => 'SHA-хэшФайла', // SHA-хэш текущего содержимого файла на GitHub (можно получить при запросе информации о файле)