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

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 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 baobab net-tools nvidia-settings ntfs-3g exfat-utils gwenview micro 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 - консоль

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

Самый умный 2

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 (можно получить при запросе информации о файле)

Golang ещё обучалка

Golang структура Архитектура

https://www.youtube.com/watch?v=B0lV7I3FO4E Пример разработки 1 https://www.youtube.com/watch?v=mr3pywHOz7I 2 https://www.youtube.com/watch?v=RHatXuBXckM // Точка входа cmd -app --main.go -parse --main.go для крона build /configs/main.yml /internal/ (внутренний)1.4 Своё, что под запретом для публикации + Основная бизнес логика /internal/app/app.go /pkg/ Доступно для скачивания другим + клиенские библиотеки /docs/ (авто-генерация через swagger) // Структуры и их методы /internal/models/ // Слой комуникации транспорта /internal/delivery/http/handler.go /internal/delivery/grpc/ // Для основной бизнес логики /internal/service/ // Хранилище для работы с базами (mongoDB top) /internal/repository/ /internal/repository/mongodb/ // Берёт данные с /configs/main.yml /internal/config/config.go /internal/config/config_test.go // Сервер /server/server.go // php index.php config -database.php -constants.php includes templates -header.php -footer.php -home.php -product.php -cart.php assets/ - папка с ресурсами, такими как изображения, стили CSS, скрипты JavaScript и т.д. admin -index.php -products.phpудаление). -orders.php uploads

Учить SQL или тренировка

Front js import modules

// Стандарт, но нельзя обратиться с консоли export const ajax = { 'json':1 } import {ajax} from './ajax.js' console.log(ajax.json) // Можно обратиться с консоли window.ajax = { 'json':1 } import './ajax.js' console.log(ajax.json)

Подключить битрикс ядро

define('NOT_CHECK_PERMISSIONS', true); // Убрать форму авторизации require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php'); Подключить js css $APPLICATION->AddHeadScript(SITE_TEMPLATE_PATH.'/js/age18.js'); $APPLICATION->SetAdditionalCSS(SITE_TEMPLATE_PATH.'/css/media.css'); $APPLICATION->AddHeadString('<meta name="viewport" content="width=device-width, initial-scale=1.0">');

Учим Kotlin ссылки

Русская документация https://kotlinlang.ru/ Курс https://kotlinlang.org/docs/home.html Курс от гугла https://developer.android.com/courses/kotlin-bootcamp/overview Тренироваться кодить, песочница https://play.kotlinlang.org/

Установка Golang

Arch sudo pacman -Syu sudo pacman -S go Ubuntu sudo apt update sudo apt upgrade sudo apt install golang-go termux apt update -y apt upgrade -y pkg install golang go version go run 1.go go build 1.go nano hello.go package main import "fmt" func main() { fmt.Println("Hello world") } go build ./hello.go ./hello OR go run ./hello.go In windows https://go.dev/doc/install

Нормальная пицца

Нормальные роллы

Golang book 12

переписать с отправкой структуры с 432 автотесты import "testing" func TestMyFunc(t *testing.T) { t.Error("not good test") } имя всегда должно начинаться с Test! go test /dir go test /dir -v -v это максимум подробности go test /dir -v -run Two -run запускает тест в названии которого есть two находит в текущем каталоге все файлы, которые завершаются на _test.go и выполняет там все функции, где имена начинаются с Test , при компиляции на эти файлы не обращают внимание.. func TestMyFunc(t *testing.T){ list := []string("app", "orange") if myFunc(list) != "norm result" { t.Error("pipec") } } подробные тесты писать так func TestMyFunc(t *testing.T){ list := []string("app", "orange") want := "norm result" result := myFunc(list) if result != want { t.Errorf("myFunc(%#v") = %#v, want %#v", list, result, want) } } если тестов много, то можно определить новый тип, как аргументы, результати через массив через цикл их перебрать называется табличные тесты веб приложения http://localhost:8080/hi package main import ( // "fmt" "log" "net/http" ) func web(writer http.ResponseWriter, request *http.Request) { writer.Write([]byte("hw")) } func main() { http.HandleFunc("/hi", web) err := http.ListenAndServe("localhost:8080", nil) log.Fatal(err) } 462 465 Преобразовать в байты и обратно fmt.Println(string([]byte(72, 101, 108, 108, 111))) // Hello fmt.Println([]byte("Hello")) // [72, 101, 108, 108, 111] func write(writer http.ResponseWriter, message string) { _, err := writer.Write([]byte(massage)) if err != nil { log.Fatal(err) } } функци можно присваивать другую функцию var newFunc func() var newFunc func(int, int) float64 newFunc = oldFunc 469 function twice(theFunc func()){ theFunc() theFunc() } Параметры и возвращаемое значение является частью типа функции 480

Golang ютуб видео

php Функция отправки письма с файлом

// Функция отправки письма function XMail($from, $to, $subj, $text, $files){ //$subj=substr(htmlspecialchars(trim($subj)), 0, 1000); //$subj=mb_convert_encoding($subj, "UTF-8", "CP1251"); //$subj=base64_encode($subj); //$subj="=?UTF-8?Q?".imap_8bit($subj)."?="; $subj="=?UTF-8?B?".base64_encode($subj)."?="; $un = strtoupper(uniqid(time())); $head = 'From: '.$from."\n"; //$head .='Reply-To: '.$from."\r\n"; //$head .= 'Bcc: ' .$from. "\r\n"; //$head .= "To: $to\n"; $head .= "Subject: $subj\n"; //$head .= "Subject: =?UTF-8?Q?".imap_8bit($subj)."?="; $head .= "X-Mailer: PHPMail Tool\n"; //$head .= "Reply-To: $from\n"; $head .= "Mime-Version: 1.0\n"; $head .= "Content-Type:multipart/mixed;"; $head .= "boundary=\"----------".$un."\"\n\n"; $zag = "------------".$un."\nContent-Type:text/html;charset=utf-8\n"; //utf-8 windows-1251 //$zag .= "\nContent-type:text/plain;charset=utf-8\r\n"; $zag .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n"; if(count($files)>0){ foreach($files as $key=>$value){ if(file_exists($value)){ if(!is_dir($value)){ $filename = $value; $f = $value['num']; $f = fopen($value,"rb"); $zag .= "------------".$un."\n"; $zag .= "Content-Type: application/octet-stream;"; $zag .= "name=\"".basename($filename)."\"\n"; $zag .= "Content-Transfer-Encoding:base64\n"; $zag .= "Content-Disposition:attachment;"; $zag .= "filename=\"".basename($filename)."\"\n\n"; $zag .= chunk_split(base64_encode(fread($f,filesize($filename))))."\n"; } } } } //file_put_contents('./test.txt', print_r(["$to", "$subj", $zag, $head], true)); if (!@mail("$to", "$subj", $zag, $head)) return 0; else return 1; } // Отправка одного письма function mail_go($mail_to, $title, $text){ //return $mail_to.' '.$title.' '.$text; return XMail('"USER"<user@site.com>', $mail_to, $title, $text, []); }

Создать бэкап в zip

#! /bin/bash # sh /root/create_backup.sh # exit 0 # Файл для периодического создания бэкапов в zip project_name="pr" max_old_backups=5 sql_bd_name="" sql_login="" sql_password="" project_dir="/var/www/pr" backups_dir="/root/backups_${project_name}" datetime=$(date +"%Y-%m-%d_%H-%M-%S") new_backup="${backups_dir}/${datetime}.zip" tmp_sql="${backups_dir}/tmp_${datetime}.sql" # Если нет этой папки, то создаём if [ ! -d $backups_dir ]; then mkdir -p $backups_dir fi # Очистка от старых # Получаем количество файлов в папке file_count=$(ls -1 $backups_dir | wc -l) if [ $file_count -gt $max_old_backups ]; then # Если файлов больше # Сортируем файлы по времени изменения и берём только последние files_to_delete=$(ls -1t $backups_dir | tail -n $(($file_count - $max_old_backups))) # Удаляем старые файлы for file in $files_to_delete; do rm "${backups_dir}/${file}" done fi echo "Create tmp_sql" && mysqldump -u $sql_login -p$sql_password $sql_bd_name > $tmp_sql && echo "tmp_sql in zip" && zip -q $new_backup $tmp_sql && echo "remove tmp_sql" && rm $tmp_sql && #echo "project in zip" && #zip -qr $new_backup $project_dir -x /var/www/pr/public/storage/* -x /var/www/pr/public/uploads/* -x /var/www/pr/storage/app/* && du -h $new_backup && echo "ready ${new_backup}"

CRON in ubuntu server

sudo apt update sudo apt install cron sudo systemctl enable cron Для включения работы в фоне Файлы хранятся тут /var/spool/cron/crontabs/ sudo nano /etc/crontab НО в них лучше не лезть Управлять всем через crontab -l Содержимое crontab -e Редактирование r удалить Для определённого пользователя sudo crontab -u www-data -e sudo crontab -u www-data -l * * * * * echo ‘Run this command every minute’ >> /root/file.log * * * * * /usr/bin/php /var/www/domain.com/backup.php > /dev/null 2>&1 минута 0–59 час 0–23 День месяца 1–31 месяц 1–12 или ЯНВ–ДЕК День недели 0–6 или ПНД–ВСК Каждую минуту: * * * * * каждый час в 15 минут: 15 * * * * Каждый день в 03:15 запускать скрипт: 15 3 * * * ~/script.sh Каждый понедельник: 0 0 * * 1 Каждый четный час: * */2 * * * или * 0,2,4,6,8,10,12,14,16,18,20,22 * * * Каждые 10 минут: */10 * * * * Новый год: 59 23 31 dec * Каждый будний день в 22:00: 0 22 * * 1-5 Для get запросов wget -O /root/tmp_wget.txt --no-check-certificate "https://site.ru?a=1" >/dev/null 2>&1 */5 * * * * sh /root/create_backup.sh >/dev/null 2>&1 service cron status service cron start service cron stop service cron restart

sh bash

# Удалить если есть файл if [ -f $final_file ]; then rm $final_file fi # Создать если нет файла if [ ! -f $final_file_log ]; then touch $final_file_log fi # Если нет этой папки, то создаём if [ ! -d $folder_backups ]; then mkdir -p $folder_backups fi

linux отложенные задачи

ctrl c закрыть ctrl z приостановить jobs посмотреть приостановленные fg %1 вернуться command & запускает в фоновом при старте если после ctrl z ввести bg, то он запустит тот процесс в фоновом режиме если после этого просто fg то он вернется как активный

Форматируем диск 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 дать название (ext4) sudo e2label /dev/sdb1 "NAME1" sudo mkdir -p /disks/d

js инверсия страницы

js document.getElementsByTagName('body')[0].style.cssText = 'filter: invert(1)';

GOlang быстрое изучение туториал

После переустановки linux

sudo apt install kde-plasma-desktop sudo apt install telegram-desktop neofetch apt-get install --reinstall locales apt update && apt upgrade sudo apt install wireguard-tools sudo apt install plasma-nm - Настроить расположение экранов - Протестить VSync - Переключение языка - Сети (И убрать галочку автоматическое включение) - Темный режим - Убрать заставку - Открытие окна по двойному клику Настройки, поведение раб среды, Основн парам, выбрать выделяет обьект - Скриншоты На клавишу Настройки комбинации комбинации Добавить приложение Flameshot - Буфер обмена - Уход в сон отменить Настройки, управление питанием, и все галочки убрать - 3 рабочих стола Настройки, поведение раб среды, Вирт раб столы, Добавить, отключить анимац переходов Редактировать панель, переместить их в право, и высоту сделать 38 - у телеграмма убрать оконный (меню / настр / Продвин настр/ системн рамка окна (в названии окна)) - У фаерфокс выключить ускорение В настройках, в поиске [произв] и убираем 2 галочки: Использовать рекомендуемые настро По возможности использовать аппара - Установка офиса - Отключить анимацию - Настроить пуск Прав кнопкой, настроить виджет, иконка, все, и в поиске menu - Убрать переключение рабочих столов по скроллу Правой кнопкой по рабоч столу настроить рабочий стол и обои Действия мыши

php sql Мультизапрос

function get_sql() { $sql = new mysqli( 'localhost', '', '', '' ); if ($sql->connect_errno) { print_r([$sql->connect_errno, $sql->connect_error]); exit(); } $sql->set_charset('utf8'); return $sql; } function query_sql_select($request) { $result = []; $sql = get_sql(); if ($query = $sql->multi_query($request)) { do { if ($res = $sql->store_result()) { while ($array = $res->fetch_array(MYSQLI_ASSOC)) { $result[] = $array; } $res->free(); } } while ($sql->more_results() && $sql->next_result()); } else { // Обработка ошибки SQL print_r([$sql->errno, $sql->error]); } $sql->close(); return $result; }

nano команды

-j прокрутка на половину экрана, а не на строку -k Вырезать от курсора до конца строки -l номера строк перед текстом -m использовать мышку nano -l nano1.txt номера строк nano -B /etc/hello.txt Бэкапнуть при сохранении nano +6,4 /etc/hello.txt в 6 строку, 4 символ ctrl o, ctrl s сохранить ctrl x выход ctrl g справка ctrl y вверх ctrl v вниз alt 6 копировать ctrl k вырезать ctrl u вставить поиск ctrl w ctrl q по найденным alt w alt q поиск и замена alt r alt u отменить alt e повторить alt n включить номера строк alt p видимые пробелы alt x убрать нижнюю панель ctrl l обновить экран alt a начать выделение

ИИ AI все библиотека список

Битрикс api смена логина и пароля

<?php $id = 1; $newLogin = ''; $newPassword = ''; require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php'); global $USER; $USER->Update($id, [ 'EMAIL' => $newLogin, 'LOGIN' => $newLogin, 'PASSWORD' => $newPassword, 'CONFIRM_PASSWORD' => $newPassword ]); echo $USER->LAST_ERROR; ?>1

Настройки 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-derver 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

Если ldap не запускается нет контакта contact

sudo apt install php8.1-ldap sudo nano /etc/php/8.1/fpm/php.ini раскомментил extension=ldap sudo service php8.1-fpm restart sudo service php-fpm status Добавь в nano /etc/ldap/ldap.conf TLS_CACERT /etc/ssl/certs/ca-certificates.crt TLS_CACERTDIR /etc/ssl/certs TLS_REQCERT never

php ldap active directory Подключение и проверка пользователя

<?php function checkLdapLogin($login, $password) { $ldap_connection = ldap_connect('ldaps://192.000.000.000', PORT_INT); ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldap_connection, LDAP_OPT_TIMELIMIT, 0); $ldap_bind = ldap_bind($ldap_connection, 'adminh@user.com', 'PASS'); if (!$ldap_bind) { echo 'Нет подключения к ldap!'; return false; } // Поиск $search_result = ldap_search( $ldap_connection, 'DC=corp,DC=armango,DC=net', "(sAMAccountName=$login)" ); $entries = ldap_get_entries($ldap_connection, $search_result); if (empty($entries)) { return false; } // Проверка по доступу пользователя return ldap_bind($ldap_connection, $entries[0]['dn'], $password) ? true : false; } echo '['.checkLdapLogin('USER_TEST', 'PASS2_TEST').']';

golang book 11

можно откладывать только вызовы функций или методов получение списка файлов в каталоге package main import ( "fmt" "io/ioutil" "log" ) func main() { files, err := ioutil.ReadDir("./") if err != nil { log.Fatal(err) } for _, file := range files { if file.IsDir() { fmt.Println("Dir ", file.Name()) } else { fmt.Println("File ", file.Name()) } } } циклы быстрее рекурсии! рекурсия showDirRecurses.go package main import ( "fmt" "io/ioutil" "log" ) func showAllFiles(way string) { files, err := ioutil.ReadDir(way) if err != nil { log.Fatal(err) } for _, file := range files { if file.IsDir() { showAllFiles(way + "/" + file.Name> //fmt.Println("Dir ", file.Name()) } else { fmt.Println("File ", file.Name()) } } } func main() { showAllFiles("./") } другой метод соединения path/filepath filePath := filepath.Join(path, file.Name()) для авариного завершения panic("aaaaaa") 399 функция паники покажет путь к ней по функциям recover() восстановиться выводит текст ошибки и забивает на панику package main import "fmt" func regen() { fmt.Println(recover()) } func freak() { defer regen() // Обязательно в другой функции! panic("aaaa") } func main() { freak() fmt.Println("text") } Лучше пользоваться обработкой ошибок, чем этмми исключениями паник.. горутины расходуют меньше памяти, чем потоки они конкурируют меж собой, кто свободен, тот и берет задачу 413 читаем веб страницу package main import ( "fmt" "io/ioutil" "log" "net/http" ) func main() { response, err := http.Get("https://h7team.ru") if err != nil { log.Fatal(err) } defer response.Body.Close() body, err := ioutil.ReadAll(response.Body) if err != nil { log.Fatal(err) } fmt.Println(string(body)) fmt.Println(len(body)) } документация go doc http Get go перед функцией или методом ставит ее паралельно остановка временно time.Sleep(time.Second * 60) минута package main import ( "fmt" "time" ) func manyPrint(str string, quantity int) { for i := 0; i < quantity; i++ { fmt.Print(str) } } func main() { go manyPrint("0", 50) go manyPrint("1", 50) manyPrint("2", 100) time.Sleep(time.Second * 5) } 222222222222222 110001111000011 Каналы Для контроля порядка горутин и передача данных от одной го рутины другой подобие колбэки горутины не могут возвращать значения подобие асинхронности в js var myChannel chan float64 myChannel = make(chan float64) или myChannel := make(chan float64) func send(myChanel chan string) { myChannel <- "hi" } func main() { myChannel := make(chan float64) go send(myChannel) fmt.PrintLn(<-myChannel) } 425 package main import ( "fmt" ) func abc(channel chan string) { channel <- "a" channel <- "b" channel <- "c" } func def(channel chan string) { channel <- "d" channel <- "e" channel <- "f" } func main() { channel1 := make(chan string) channel2 := make(chan string) go abc(channel1) go def(channel2) fmt.Print(<-channel1) fmt.Print(<-channel2) fmt.Print(<-channel1) fmt.Print(<-channel2) fmt.Print(<-channel1) fmt.Print(<-channel2) } есл отправка нескольких данных из горутины, то вторая блокируется до тех пор пока первая ее не спрашивает, когда первая спрашивает, тогда вторая начинает заниматься грубо если не просит, то вторая и не делает package main import ( "fmt" "time" ) func wait(name string, delay int) { for i := 0; i < delay; i++ { fmt.Println(name, " sleep") time.Sleep(time.Second) } } func send(channel chan string) { wait("send", 3) fmt.Println("val1") channel <- "a" fmt.Println("val2") channel <- "b" } func main() { channel := make(chan string) go send(channel) wait("main", 5) fmt.Println(<-channel) fmt.Println("podumai") fmt.Println(<-channel) } main sleep send sleep main sleep send sleep send sleep main sleep val1 main sleep main sleep a podumai val2 b Как бы второй ответ начинает создаваться только тогда, когда был выполнен первый видимо он не создается, когда канал занят первым package main import ( "fmt" "time" ) func wait(name string, delay int) { for i := 0; i < delay; i++ { fmt.Println(name, " work") time.Sleep(time.Second) } } func send(channel chan string) { wait("rab", 3) fmt.Println("val1") channel <- "a" wait("rab", 15) fmt.Println("val2") channel <- "b" } func main() { channel := make(chan string) go send(channel) wait("bos", 10) fmt.Println(<-channel) fmt.Println("obed") wait("bos", 8) fmt.Println(<-channel) fmt.Println("to home") } 427 GNU nano 7.2 rutinSizeSite.go package main import ( "fmt" "io/ioutil" "log" "net/http" ) func responseSize(url string, channel chan int) { fmt.Println("Get ", url) responce, err := http.Get(url) if err != nil { log.Fatal(err) } defer responce.Body.Close() body, err := ioutil.ReadAll(responce.Body) if err != nil { log.Fatal(err) } channel <- len(body) } func main() { sizes := make(chan int) urls := []string{ "https://h7team.ru", "https://google.com", "https://ya.ru", } for _, url := range urls { go responseSize(url, sizes) } for i := 0; i < len(urls); i++ { fmt.Println(<-sizes) } } 431

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

ls -alh /var/www/site.com/bootstrap sudo chmod -R 755 /var/www/site.com/bootstrap/cache sudo chown -R user:www-data /var/www/site.com/bootstrap/cache

js удалить элемент

const h1 = document.querySelector('h1') const parent = h1.parentNode parent.removeChild(h1) или element.parentNode.removeChild(element)

Quake Live quake 3 arena

угол обзора /cg_fov 110 /g_gametype sniper Подключаемся ipconfig ifconfig /connect 192.168.__.__:27960 Добавить ботов /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

Создать 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; .. Список прав CREATE — Позволяет пользователям создавать базы данных/таблицы SELECT — Разрешает делать выборку данных INSERT — Право добавлять новые записи в таблицы UPDATE — Позволяет изменять существующие записи в таблицах DELETE — Даёт право удалять записи из таблиц DROP — Возможность удалять записи в базе данных/таблицах аб. https://www.hostinger.ru/rukovodstva/kak-sozdat-polzovatelya-mysql-i-nastroit-prava-dostupa/ Подробная инструкция

Архивировать с консоли sh bash

Архив sudo apt install zip unzip zip -r /path/to/files/* unzip archive.zip zip -r data.zip data/ zip -qr data.zip data/ Тихо unzip имя_файла.zip -d /tmp

Linux стать root

sudo su или sudo -i

MX Linux ubuntu

sudo apt install telegram-desktop sudo apt install anydesk sudo apt install chromium-browser

Рисовалка ии аи ai

Перевод видео расширение

lemp arch linux

sudo pacman -S nginx mysql php php-fpm php-mysql sudo nano /etc/nginx/nginx.conf http { ... types_hash_max_size 2048; types_hash_bucket_size 64; ... } sudo nginx -t sudo systemctl start nginx.service sudo systemctl restart nginx.service sudo systemctl status nginx.service /etc/php/php.ini sudo systemctl restart php-fpm.service

kubernetes arch linux

kubernetes https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ sudo pacman -S docker kubectl kubectl cluster-info kubectl run my-app --image=nginx --port=80

Учим Laravel Roadmap

Модификация битрикс ядра

Проверить ядро на модификацию /bitrix/admin/checklist.php тест "Ядро проекта не модифицировалось" Перезагрузить ядро /bitrix/admin/update_system.php?BX_SUPPORT_PROTOCOL21=Y 21 - текущий день месяца cron инструкция https://dev.1c-bitrix.ru/community/webdev/user/8078/blog/implementation-of-all-agents-in-cron/,

Помощь и поддержка - 1С-Битрикс

Битрикс развернуть тестовый сайт

golang book 10

для проверки количества символов в строке подключаем unicode/utf8 if utf8.RuneCountInString(title) > 20 packege calendarmark import ( "unicode/utf8" "my/date" ) type Event struct { title String Date } func (e *Event) Title() string { return e.title } func (e *Event) Title(title string) string { if utf8.RuneCountInString(title) > 20 { return errors.New("invalit title") } etitle = title return nill } Интерфейсы это набор средств для взаимодействия с программой type MyInterface interfacee { method1() method2(float64) что получает method3() string что возвращает } обьявляем переменные, использующие интерфейс var value mypkg.MyInterface value.method1() интерфейс просто описывает, какие методы обязательно содержать package main import "fmt" type Whistle string func (w Whistle) MakeSound() { fmt.Println("Tweet!") } type Horn string func (h Horn) MakeSound() { fmt.Println("Honk!") } type NoiseMaker interface{ MakeSound() } func main() { var toy NoiseMaker // Хоть тут тип интерфейс toy = Whistle("Toyco Canary") // Все равно присваиваем переменную toy.MakeSound() toy = Horn("Toyco Blaster") toy.MakeSound() } еще интерфейс блокирует доступ к сторонним функциям при присвоение в интерфейс интерфейс = что-то мы можем вызывать только функции интерфейса Утверждение типа как я понял, это передача данных интерфейса в тот же тип var mark1 Marker = Robot("12") var robot Robot = Marker.(Robot) robot, ok := Marker.(Robot) ok true false если доставать не тот тип из интерфейса, то именно во время выполнения (не компиляции) будет паника при таком возврате, есть второе возвращаемое значение где если true то все норм передалось false все пошло не как надо и если ок, то используем необходимые функции error это тоже интерфейс, который есть по умолчанию package main import ( "fmt" "log" ) type OverError float64 func (o OverError) Error() string { return fmt.Sprintf("Over %02f", o) } func checkTemperature(actual float64, safe float64) error { excess := actual - safe if excess > 0 { return OverError(excess) } return nil } func main() { var err error = checkTemperature(121.379, 100.0) if err != nil { log.Fatal(err) } } по правилам этикета в тип необходимо добавлять метод Stringer для красивого вывода 376 так же рно воспринимается по умолчанию для вывода type Milliliters float64 func (m Milliliters) String() string { return fmt.Sprintf("%0.2f mL", m) } func main() { fmt.Println(Gallons(12.09248342)) fmt.Println(Liters(12.09248342)) fmt.Println(Millilite rs(12.09248342)) } для документаций go doc interface{} пустой интерфейс это для передачи значения любого типа в функцию интерфейс не описывает что, он говорит только действия 383 os.Args содержит все аргументы запуска программы всегда закрывайте файлы при чтении чтоб экономить ресурсы defer она откладывает действие на момент завершения функции либо программы package main import "fmt" func Socialize() { defer fmt.Println("1") defer fmt.Println("2") fmt.Println("3") fmt.Println("4") } func main() { Socialize() Socialize() } 34213421 defer пофигу на return и они закрываются снизу вверх и вызывается до вывода ошибки программа для сумиирования float64 с файла sumFloat64File.go package main import ( "bufio" "fmt" "log" "os" "strconv" ) func OpenFile(fileName string) (*os.File, error) { fmt.Println("Opening ", fileName) return os.Open(fileName) } func CloseFile(file *os.File) { fmt.Println("Closing file") file.Close() } func GetFloats(fileName string) ([]float64, error) { var numbers []float64 file, err := OpenFile(fileName) if err != nil { return nil, err } defer CloseFile(file) scaner := bufio.NewScanner(file) for scaner.Scan() { number, err := strconv.ParseFloat(scaner.T> if err != nil { return nil, err } numbers = append(numbers, number) } if scaner.Err() != nil { return nil, scaner.Err() } return numbers, nil } func main() { numbers, err := GetFloats(os.Args[1]) if err != nil { log.Fatal(err) } var sum float64 = 0 for _, number := range numbers { sum += number } fmt.Printf("Sum: %0.2f\n", sum) } 385

YAY (AUR)

Установка pacman -S --needed git base-devel git clone https://aur.archlinux.org/yay.git cd yay makepkg -si Основные команды использования, например, для поиска пакета или приложения: 1 yay -Ss <package-name> Чтобы установить приложение с помощью yay: 1 yay -S <package-name> Если вы хотите выполнить обновление системы 1 yay -Syu Обновите систему, включая установленные пакеты AUR. 1 yay -Syua yay Псевдоним yay -Syu. yay <Search Term> Настоящее меню выбора установки пакета. yay -Bi <dir> Установите зависимости и создайте локальный PKGBUILD. yay -G <AUR Package> Скачать PKGBUILD из ABS или AUR. ( yay v12.0 + ) yay -Gp <AUR Package> Печать на стандартный PKGBUILD из ABS или AUR. yay -Ps Печать системы статистики. yay -Syu --devel Выполните обновление системы, а также проверьте наличие обновлений пакета разработки. yay -Syu --timeupdate Выполните обновление системы и используйте время модификации PKGBUILD (, а не номер версии ), чтобы определить обновление. yay -Wu <AUR Package> Unvote для пакета ( Требуется настройка AUR_USERNAME и AUR_PASSWORD переменные среды ) ( yay v11.3 + ) yay -Wv <AUR Package> Голосовать за пакет ( Требуется настройка AUR_USERNAME и AUR_PASSWORD переменные среды ). ( yay v11.3 + ) yay -Y --combinedupgrade --save Сделайте комбинированное обновление режима по умолчанию. yay -Y --gendb Создать базу данных пакетов разработки, используемую для обновления devel. yay -Yc Очистите ненужные зависимости. Собранные пакеты хранятся по адресу ~/home/(имя_пользователя)/.cache/yay

fish in Linux

Установка: sudo pacman -S fish Запуск fish через .bashrc Оставьте Bash оболочкой по умолчанию и просто добавьте строку exec fish в подходящий файл настроек Bash, например .bashrc. Это позволит Bash правильно выполнить source файла /etc/profile и всех файлов в /etc/profile.d/. Поскольку процесс Bash полностью заменяется на процесс fish, выход из fish также приведёт к выходу из терминала. файл находится здесь ~/.bashrc

flatpak в Linux

Добавить удалённый репозиторий flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo удалить репозиторий flatpak remote-delete flathub поиск приложений flatpak search gimp Установка приложений $ flatpak install flathub org.gimp.GIMP Начиная с Flatpak 1.2, команда install может искать приложения. просто: $ flatpak install gimp Запуск приложений flatpak run org.gimp.GIMP Обновление flatpak update Список установленных приложений flatpak list Для того, чтобы просто вывести список установленных приложений, запустите: $ flatpak list --app Чтобы удалить приложение, запустите: $ flatpak uninstall org.gimp.GIMP Чтобы удалить среды выполнения и расширения, которые не используются установленными приложениями, используйте: $ flatpak uninstall --unused Чтобы узнать, какие изменения были внесены в вашу установку Flatpak с течением времени, вы можете просмотреть журналы (начиная с 1.2): $ flatpak history

команды pacman в Arch Linux

Избегайте определенных команд pacman Избегать делать частичные обновления. Другими словами, никогда не беги pacman -Sy; вместо этого всегда используйте pacman -Syu. Установка определенных пакетов # pacman -S package_name1 package_name2 ... Удаление пакетов Чтобы удалить один пакет, оставив все его зависимости установленными: # pacman -R имя_пакета Чтобы удалить пакет и его зависимости, которые не требуются ни одним другим установленным пакетом: # pacman -Rs имя_пакета Вышеуказанное может иногда отказываться запускаться при удалении группы, которая содержит необходимые пакеты. В этом случае попробуйте: # pacman -Rsu имя_пакета Команда pacman -Qdtq показывает нам список ненужных зависимостей. Однако для их устранения необходимо комбинировать его с pacman -R. Это выглядело бы так: pacman -Rs $(pacman -Qdtq) В будущем не забывайте удалять пакеты с помощью параметра -Rs (R для удаления рассматриваемого пакета, s для удаления всех его зависимостей). pacman -Rs mypackage Поскольку мы занимаемся очисткой нашей системы, мы также можем увидеть, как очистить системный кеш пакетов (то есть, как очистить загруженные пакеты, которые были позже установлены и которые pacman остались на вашем компьютере, на случай, если вам потребуется их переустановить или вернуть к более ранней версии). pacman -Scc Pacman сохраняет важные файлы конфигурации при удалении определенных приложений и называет их расширением: .pacsave. Чтобы предотвратить создание этих файлов резервных копий, используйте -n опция: # pacman -Rn имя_пакета Обновление пакетов # pacman -Syu Запрос баз данных пакетов Пакман запрашивает локальную базу данных пакетов с -Q флаг, база данных синхронизации с -S флаг и база данных файлов с -F флаг. Посмотреть pacman -Q --help, pacman -S --help и pacman -F --help для соответствующих подварий каждого флага. Pacman может искать пакеты в базе данных, ища как имена, так и описания пакетов: $ pacman -Ss string1 string2 ... Для поиска уже установленных пакетов: $ pacman -Qs string1 string2 ... Для отображения обширной информации о данном пакете: $ pacman -Si имя_пакета Для того, чтобы просмотреть список всех установленных пакетов в Arch Linux, можно использовать следующую команду: pacman -Q Очистка кэша пакета Pacman хранит свои загруженные пакеты в /var/cache/pacman/pkg/ и не удаляет старые или неустановленные версии автоматически. Это имеет некоторые преимущества: Это позволяет понижать пакет без необходимости извлекать предыдущую версию другими способами, такими как Архив Linux Архив. Удаленный пакет можно легко переустановить непосредственно из каталога кэша, не требуя новой загрузки из хранилища. Однако необходимо периодически очищать кэш, чтобы каталог не увеличивался бесконечно. paccache ( 8 ) скрипт, предоставленный в Пакман-вклад пакет, удаляет все кэшированные версии установленных и неустановленных пакетов, за исключением самых последних трех, по умолчанию: # paccache -r Вы также можете определить, сколько последних версий вы хотите сохранить. Чтобы сохранить только одну предыдущую версию, используйте: # paccache -rk1 Добавить -u/--uninstalled переключиться, чтобы ограничить действие paccache для удаленных пакетов. Например, чтобы удалить все кэшированные версии неустановленных пакетов, используйте следующее: # paccache -ruk0 Чтобы удалить все кэшированные пакеты, которые в данный момент не установлены, и неиспользованную базу данных синхронизации, выполните: # pacman -Sc Чтобы удалить все файлы из кэша, дважды используйте чистый переключатель, это самый агрессивный подход, который ничего не оставит в каталоге кэша: # pacman -Scc Установите «локальный» пакет, который не из удаленного хранилища (, например, пакет из AUR): # pacman -U /path/to/package/package_name-version.pkg.tar.zst Установите «удаленный» пакет ( не из репозитория, указанного в Пакман's файлы конфигурации ): # pacman -U http://www.example.com/repo/example.pkg.tar.zst Синхронизация базы данных файлов: pacman -Fy Поиск пакета, содержащего файл, например.: pacman -F pacman pkgcacheclean pkgcacheclean это приложение для очистки кэша пакетов pacman в Arch Linux. pkgcacheclean [options] [preserve_number]

grub в Arch Linux

Для обновления информации о новых ядрах в загрузчике grub в Arch Linux выполните следующие шаги: 1. Откройте терминал. 2. Обновите систему: ``` sudo pacman -Syu ``` 3. Используйте команду: ``` sudo grub-mkconfig -o /boot/grub/grub.cfg ``` Эта команда создаст новый файл конфигурации grub.cfg на основе информации о найденных ядрах и активных разделах в вашей системе. 4. Перезапустите компьютер, чтобы убедиться в том, что информация о новых ядрах успешно добавлена в загрузчик grub. Настройка grub Отключите подменю grub, чтобы все доступные версии ядра отображались на главном экране (а не в расширенных параметрах). Настройте grub для вызова последней загруженной записи ядра и использования ее в качестве записи по умолчанию для загрузки в следующий раз. Необходимо расскомментировать и указать следующее: GRUB_DISABLE_SUBMENU = y GRUB_DEFAULT="saved" GRUB_SAVEDEFAULT="true" Чтобы изменения вступили в силу, вам необходимо заново сгенерировать файл конфигурации. Для этого откройте терминал и выполните следующую команду: $ sudo grub-mkconfig -o /boot/grub/grub.cfg