Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
#Круги добра
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Веселая аркада с Печенькой для новогоднего настроения. Объезжайте препятствия, а подарки, варежки, конфеты и прочие приятности не объезжайте: они помогут набрать очки и установить новый рекорд.

Сноуборд

Спорт, Аркады, На ловкость

Играть

Топ прошлой недели

  • SpongeGod SpongeGod 1 пост
  • Uncleyogurt007 Uncleyogurt007 9 постов
  • ZaTaS ZaTaS 3 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
7
hypo69
hypo69
13 дней назад
Лига Сисадминов
Серия Философия PowerShell

А давайте встроим ии в powershell. Часть вторая. Поисковик спецификаций⁠⁠

А давайте встроим ии в powershell. Часть вторая. Поисковик спецификаций Программирование, IT, Гайд, Powershell, Gemini, Программа, Скрипт, Искусственный интеллект, Системный аналитик, Системное администрирование, Видео, Без звука, Длиннопост

Интерфейс командной строки программы

В прошлый раз мы увидели, как с помощью powershell можем взаимодействовать с моделью Gemini через интерфейс командной строки. В этой статье я покажу как извлечь пользу из наших знаний. Сегодня мы соберем интерактивный справочник, который на вход будет принимать параметры компонента (марка, модель, категория, артикул и т. п.), а возвращать интерактивную таблицу с характеристиками, полученную от модели Gemini.

Что нам понадобится:
Gemini-CLI
OutConsoleGridView

Дисклеймер. В пикабу нет редактора кода - поэтому такое форматирование и картинки. В конце поста я дам ссылку на github. Почитайте, и если вам интересно, смотрите код на гитхабе.

Инженеры, разработчики и другие специалисты сталкиваются с тем, что нужно узнать точные параметры, например материнской платы, автомата в электрощитке или сетевого коммутатора. Наш справочник всегда будет под рукой и по запросу соберет информацию, уточнит параметры в интернете и вернет искомую таблицу. В таблице можно выбрать необходимый параметр/ы и по необходимости продолжить углубленный поиск. В дальнейшем мы научимся передавать результат по конвейеру для дальнейшей обработки: экспорта в таблицу Excel, Google таблицу, хранения в базе данных или передачи в другую программу В случае неудачи модель посоветует, какие параметры надо уточнить. Впрочем, смотрите сами:

Шаг 1: Настройка

А давайте встроим ии в powershell. Часть вторая. Поисковик спецификаций Программирование, IT, Гайд, Powershell, Gemini, Программа, Скрипт, Искусственный интеллект, Системный аналитик, Системное администрирование, Видео, Без звука, Длиннопост

Назначение строк:

  • $env:GEMINI_API_KEY = "..." — устанавливает API ключ для доступа к Gemini AI

  • if (-not $env:GEMINI_API_KEY) — проверяет наличие ключа, завершает работу если его нет

  • $scriptRoot = Get-Location — получает текущую рабочую директорию

  • $HistoryDir = Join-Path... — формирует путь к папке для хранения истории диалогов (.gemini/.chat_history)

  • $timestamp = Get-Date... — создает временную метку в формате 2025-08-26_14-30-15

  • $historyFileName = "ai_session_$timestamp.jsonl" — генерирует уникальное имя файла сессии

  • $historyFilePath = Join-Path... — создает полный путь к файлу истории текущей сессии

Проверка окружения — что должно быть установлено.

А давайте встроим ии в powershell. Часть вторая. Поисковик спецификаций Программирование, IT, Гайд, Powershell, Gemini, Программа, Скрипт, Искусственный интеллект, Системный аналитик, Системное администрирование, Видео, Без звука, Длиннопост

Что проверяется:

  • Наличие Gemini CLI в системе — без него скрипт не работает

  • Файл GEMINI.md — содержит системный промпт (инструкции для AI)

  • Файл ShowHelp.md — справка для пользователя (команда ?)

Основная функция взаимодействия с AI.

А давайте встроим ии в powershell. Часть вторая. Поисковик спецификаций Программирование, IT, Гайд, Powershell, Gemini, Программа, Скрипт, Искусственный интеллект, Системный аналитик, Системное администрирование, Видео, Без звука, Длиннопост

Задачи функции:

  • Вызывает Gemini CLI с указанной моделью и промптом

  • Захватывает все выводы (включая ошибки)

  • Очищает результат от служебных сообщений CLI

  • Возвращает чистый ответ AI или $null при ошибке

Функции управления историей.

А давайте встроим ии в powershell. Часть вторая. Поисковик спецификаций Программирование, IT, Гайд, Powershell, Gemini, Программа, Скрипт, Искусственный интеллект, Системный аналитик, Системное администрирование, Видео, Без звука, Длиннопост

Назначение:

  • Add-History — сохраняет пары «вопрос-ответ» в JSONL формате

  • Show-History — показывает содержимое файла истории

  • Clear-History — удаляет файл истории текущей сессии

Функция отображения выбранных данных

А давайте встроим ии в powershell. Часть вторая. Поисковик спецификаций Программирование, IT, Гайд, Powershell, Gemini, Программа, Скрипт, Искусственный интеллект, Системный аналитик, Системное администрирование, Видео, Без звука, Длиннопост

Show-SelectionTable

Задача функции: После выбора элементов в Out-ConsoleGridView показывает их в консоли в виде аккуратной таблицы, чтобы пользователь видел, что именно выбрал.

Основной рабочий цикл.

А давайте встроим ии в powershell. Часть вторая. Поисковик спецификаций Программирование, IT, Гайд, Powershell, Gemini, Программа, Скрипт, Искусственный интеллект, Системный аналитик, Системное администрирование, Видео, Без звука, Длиннопост

Основой цикл программы

Ключевые особенности:

  • Индикатор [Выборка активна] показывает, что есть данные для анализа

  • Каждый запрос включает всю историю диалога для поддержания контекста

  • AI получает и историю, и выбранные пользователем данные

  • Результат пытается отобразиться как интерактивная таблица

  • При неудаче парсинга JSON показывается обычный текст

Структура рабочей директории.

А давайте встроим ии в powershell. Часть вторая. Поисковик спецификаций Программирование, IT, Гайд, Powershell, Gemini, Программа, Скрипт, Искусственный интеллект, Системный аналитик, Системное администрирование, Видео, Без звука, Длиннопост

Проследим весь жизненный цикл нашего скрипта - что происходит с момента запуска и до получения результатов.

Инициализация: подготовка к работе

При запуске скрипт первым делом настраивает рабочее окружение. Он устанавливает API ключ для доступа к Gemini AI, определяет текущую папку как базовую директорию и создает структуру для хранения файлов. Особое внимание уделяется истории диалогов - для каждой сессии создается уникальный файл с временной меткой, например ai_session_2025-08-26_14-30-15.jsonl.

Затем система проверяет, что все необходимые инструменты установлены. Она ищет Gemini CLI в системе, проверяет наличие файлов конфигурации (системный промпт и справка). Если что-то критично важное отсутствует, скрипт предупреждает пользователя или завершает работу.

Запуск интерактивного режима

После успешной инициализации скрипт переходит в интерактивный режим - показывает приветственное сообщение и ждет ввода от пользователя. Приглашение выглядит как 🤖AI :) > и меняется на 🤖AI [Выборка активна] :) > когда у системы есть данные для анализа.

Обработка пользовательского ввода

Каждый ввод пользователя сначала проверяется на служебные команды через функцию Command-Handler. Эта функция распознает команды ? (справка из файла ShowHelp.md), history (показать историю сессии), clear и clear-history (очистить файл истории), gemini help (справка по CLI), exit и quit (выход). Если это служебная команда, она выполняется немедленно без обращения к AI, и цикл продолжается.

Если это обычный запрос, система начинает формировать контекст для отправки в Gemini. Она читает всю историю текущей сессии из JSONL файла (если он существует), добавляет блок с данными из предыдущей выборки (если есть активная выборка), и объединяет все это с новым запросом пользователя в структурированный промпт с разделами "ИСТОРИЯ ДИАЛОГА", "ДАННЫЕ ИЗ ВЫБОРКИ" и "НОВАЯ ЗАДАЧА". После использования данные выборки обнуляются.

Взаимодействие с искусственным интеллектом

Сформированный промпт отправляется в Gemini через командную строку. Система вызывает gemini -m модель -p промпт, захватывает весь вывод и очищает его от служебных сообщений CLI. Если происходит ошибка на этом этапе, пользователь получает предупреждение, но скрипт продолжает работать.

Обработка ответа AI

Полученный от AI ответ система пытается интерпретировать как JSON. Сначала она ищет блок кода в формате json..., извлекает содержимое и пытается его распарсить. Если такого блока нет, парсит весь ответ целиком. При успешном парсинге данные отображаются в интерактивной таблице Out-ConsoleGridView с заголовком "Выберите строки для следующего запроса (OK) или закройте (Cancel)" и множественным выбором. Если JSON не распознается (ошибка парсинга), ответ показывается как обычный текст в голубом цвете.

Работа с выборкой данных

Когда пользователь выбирает строки в таблице и нажимает OK, система выполняет несколько действий. Сначала вызывается функция Show-SelectionTable, которая анализирует структуру выбранных данных: если это объекты с свойствами, она определяет все уникальные поля и показывает данные через Format-Table с автоподбором размера и переносом. Если это простые значения, отображает их как нумерованный список. Затем выводит счетчик выбранных элементов и сообщение "Выборка сохранена. Добавьте ваш следующий запрос (например, 'сравни их')".

Выбранные данные преобразуются в сжатый JSON с глубиной вложенности 10 уровней и сохраняются в переменной $selectionContextJson для использования в следующих запросах к AI.

Ведение истории

Каждая пара "запрос пользователя - ответ AI" сохраняется в файл истории в формате JSONL. Это обеспечивает непрерывность диалога - AI "помнит" весь предыдущий разговор и может ссылаться на ранее обсуждавшиеся темы.

Цикл продолжается

После обработки запроса система возвращается к ожиданию нового ввода. Если у пользователя есть активная выборка, это отражается в приглашении командной строки. Цикл продолжается до тех пор, пока пользователь не введет команду выхода.

Практический пример работы

Представим, что пользователь запускает скрипт и вводит "RTX 4070 Ti Super":

  1. Подготовка контекста: Система берет системный промпт из файла, добавляет историю (пока пустую) и новый запрос

  2. Обращение к AI: Полный промпт отправляется в Gemini с просьбой найти характеристики видеокарт

  3. Получение данных: AI возвращает JSON с массивом объектов, содержащих информацию о различных моделях RTX 4070 Ti Super

  4. Интерактивная таблица: Пользователь видит таблицу с производителями, характеристиками, ценами и выбирает 2-3 интересующие модели

  5. Отображение выборки: В консоли появляется таблица с выбранными моделями, приглашение меняется на [Выборка активна]

  6. Уточняющий запрос: Пользователь пишет "сравни производительность в играх"

  7. Контекстный анализ: AI получает и исходный запрос, и выбранные модели, и новый вопрос - дает детальное сравнение именно этих карт

Завершение работы

При вводе exit или quit скрипт корректно завершается, сохранив всю историю сессии в файл. Пользователь может в любой момент вернуться к этому диалогу, просмотрев содержимое соответствующего файла в папке .chat_history.

Вся эта сложная логика скрыта от пользователя за простым интерфейсом командной строки. Человек просто задает вопросы и получает структурированные ответы, а система берет на себя всю работу по поддержанию контекста, парсингу данных и управлению состоянием диалога.

Серия «Философия PowerShell»
Серия «gemini-cli»

Полезно? Подпишись.
Понравилось — ставь «+»
Задавай вопросы в комментариях 👇👇👇
Удачи! 🚀

Показать полностью 7 1
[моё] Программирование IT Гайд Powershell Gemini Программа Скрипт Искусственный интеллект Системный аналитик Системное администрирование Видео Без звука Длиннопост
1
15
hypo69
hypo69
25 дней назад
Лига Сисадминов
Серия Философия PowerShell

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView)⁠⁠

Дисклеймер. В пикабу нет редактора кода - поэтому такое форматирование и картинки. В конце поста я дам ссылку на github. Почитайте, и если вам интересно, смотрите код на гитхабе.

Каждый раз, когда вы делаете фотографию, ваша камера записывает в файл не только само изображение, но и служебную информацию: модель камеры и объектива, дату и время съемки, выдержку, диафрагму, ISO, GPS-координаты. Эти данные называются EXIF (Exchangeable Image File Format).

Хотя PowerShell имеет встроенные средства для чтения некоторых метаданных, они ограничены. Чтобы получить доступ ко всей информации, нужен специализированный инструмент. В этой статье я использую ExifTool.

ExifTool — это бесплатная, кросс-платформенная утилита с открытым исходным кодом, написанная Филом Харви. Она является золотым стандартом для чтения, записи и редактирования метаданных в самых разных форматах файлов (изображения, аудио, видео, PDF и др.). ExifTool знает тысячи тегов от сотен производителей устройств, что делает его самым всеобъемлющим инструментом в своем классе.

Скачивание ExifTool и правильная настройка

Прежде чем писать код, нужно подготовить саму утилиту.

  1. Зайдите на официальный сайт ExifTool: https://exiftool.org/. На главной странице найдите и скачайте "Windows Executable".

  2. Переименование (Критически важный шаг!): Скачанный файл будет называться exiftool(-k).exe. Это не случайность, а специальная функция для удобства пользователей, которые работают с программой через графический интерфейс Windows, а не через командную строку.

Переименуйте его в exiftool.exe, чтобы отключить режим "паузы", который предназначен для пользователей, запускающих программу двойным щелчком мыши. Когда вы запускаете программу из скрипта, PowerShell ожидает, что она выполнит свою задачу, вернет результат (текст, данные) и завершится. Режим с паузой (-k) нарушает этот процесс

Хранение: У вас есть два основных варианта, где хранить exiftool.exe.

  • Вариант 1 (Простой): В той же папке, что и ваш скрипт. Это самый легкий путь. Ваш скрипт PowerShell всегда сможет найти утилиту, так как она лежит рядом. Идеально для портативных скриптов, которые вы переносите с компьютера на компьютер.

  • Вариант 2 (Рекомендуемый для частого использования): В папке из системной переменной PATH. Переменная PATH — это список директорий, где Windows и PowerShell автоматически ищут исполняемые файлы. Вы можете создать папку (например, C:\Tools), положить туда exiftool.exe и добавить C:\Tools в системную переменную PATH. После этого вы сможете вызывать exiftool.exe из любой папки в любой консоли.

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

скрипты для добавления в $PATH:
Добавление директории в PATH для ТЕКУЩЕГО ПОЛЬЗОВАТЕЛЯ
Добавление директории в СИСТЕМНЫЙ PATH для ВСЕХ ПОЛЬЗОВАТЕЛЕЙ

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

PowerShell и внешние программы

Чтобы эффективно использовать ExifTool, нужно знать, как PowerShell запускает внешние .exe файлы. Правильный и самый надежный способ запуска внешних программ — это оператор вызова & (амперсанд). PowerShell выдаст ошибку в случае, если путь к программе содержит пробелы. Например, C:\My Tools\exiftool.exe. & (амперсанд)** говорит PowerShell: "Текст, который следует за мной в кавычках, — это путь к исполняемому файлу. Запусти его, а всё, что идет дальше, — это его аргументы".

# Правильный синтаксис
> & "C:\Path With Spaces\program.exe" "аргумент 1" "аргумент 2"

Всегда используйте &, когда работаете с путями к программам в переменных или путями, которые могут содержать пробелы.

ExifTool + PowerShell

Теперь объединим наши знания.

Пример №1: Базовое извлечение и интерактивный просмотр

Самый простой способ получить все данные из фото и изучить их — это запросить их в формате JSON и передать в Out-ConsoleGridView (ogv).

Путь к фото
> $photoPath = "E:\photos\1234.png"

1. Запускаем exiftool с ключом -json для структурированного вывода
2. Преобразуем JSON-текст в объект PowerShell
Вызываем exiftool.exe напрямую, без переменной и оператора вызова &.
> $exifObject = exiftool.exe -json $photoPath | ConvertFrom-Json

3. Превращаем "широкий" объект в удобную таблицу "Параметр-Значение"
> $reportData = $exifObject.psobject.Properties | Select-Object Name, Value

4. Выводим результат в интерактивное окно для анализа
> $reportData | Out-ConsoleGridView -Title "Метаданные файла: $($photoPath | Split-Path -Leaf)"

Этот код откроет интерактивное окно, где вы сможете отсортировать данные по имени параметра или значению, а также отфильтровать их, просто начав вводить текст. Это невероятно удобно для быстрого поиска нужной информации.


Пример №2: Создание чистого отчета и отправка на разные "устройства"

Out-ConsoleGridView — это только начало. Вы можете направить обработанные данные куда угодно, используя другие командлеты Out-*.

Предположим, у нас есть данные в переменной $reportData из предыдущего примера.

А) Отправка в CSV-файл для Excel
Создаем директорию Reports:
> New-Item -Path "C:\Reports" -ItemType Directory
Сохраняем CSV
> $reportData | Export-Csv -Path "C:\Reports\photo_exif.csv" -NoTypeInformation -Encoding UTF8

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

В) Отправка в буфер обмена

Хотите быстро вставить данные в письмо или чат? Используйте Out-Clipboard.
> $reportData | Format-Table -AutoSize | Out-String | Out-Clipboard
Теперь вы можете нажать `Ctrl+V` в любом текстовом редакторе и вставить аккуратно отформатированную таблицу.


Пример №3: Получение конкретных данных для использования в скрипте

Часто вам не нужен весь отчет, а лишь одно или два значения. Поскольку $exifObject — это обычный объект PowerShell, вы можете легко обращаться к его свойствам.

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

Пример №4: Пакетное извлечение метаданных из папки

Иногда нужно проанализировать не одно фото, а целую папку с изображениями.

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

Пример №5: Рекурсивный поиск по подпапкам

ExifTool умеет сам искать файлы во всех подпапках при использовании ключа -r.

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

Пример №6: Переименование файлов по дате съемки

Это один из самых популярных сценариев автоматизации — файлы получают имена по дате/времени съемки.

> $exifToolPath = "C:\Tools\exiftool.exe" $photoFolder = "D:\Photos" # Переименуем в формат YYYY-MM-DD_HH-MM-SS.jpg & $exifToolPath -r -d "%Y-%m-%d_%H-%M-%S.%%e" "-FileName<DateTimeOriginal" $photoFolder

💡 ExifTool подставит расширение исходного файла автоматически через %%e.

Пример №7: Извлечение только GPS-координат

Полезно, если вы хотите построить карту по вашим фото.

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

Пример №8: Массовое удаление всех GPS-данных (для приватности)

# Удалим все GPS-теги из JPG и PNG
> & $exifToolPath -r -overwrite_original -gps:all= "D:\Photos"

💡 Это действие необратимо, поэтому делайте бэкап перед выполнением.


Пример №9: Конвертация времени съемки в местное время

Иногда фото сняты в другом часовом поясе. ExifTool может сместить дату.

# Смещаем время на +3 часа
> & $exifToolPath "-AllDates+=3:0:0" "D:\Photos\IMG_*.JPG"


Пример №13: Копирование метаданных с одного файла на другой

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

Пример №14: Сохранение исходных метаданных в отдельный JSON перед изменением

> $backupPath = "C:\Reports\metadata_backup.json" & $exifToolPath -r -json "D:\Photos" | Out-File -Encoding UTF8 $backupPath


Пример №15: Использование PowerShell для автоматической сортировки фото по дате

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

Пример 16: Поиск всех уникальных моделей камер в коллекции

Хотя это можно сделать одной строкой, вывод в GridView позволяет сразу скопировать нужное название модели.

Ключ -s3 выводит только значения, -Model - название тега
> $uniqueModels = & exiftool.exe -r -Model -s3 "D:\Photos" | Sort-Object -Unique
Выводим в GridView для удобного просмотра и копирования
> $uniqueModels | Out-ConsoleGridView -Title "Уникальные модели камер в коллекции"

Статья на github

Еще по теме Out-ConsoleGridView:

Философия PowerShell. Часть 4. Интерактивная работа: Out-ConsoleGridView
Серия «Философия PowerShell». Практические примеры использования Out-ConsoleGridView

Вся Серия постов о PowerShell

Полезно? Подпишись.
Понравилось — ставь «+»
Задавай вопросы в комментариях 👇👇👇
Удачи! 🚀

Показать полностью 9 4
[моё] Powershell Инструкция Админ Системное администрирование Обработка фотографий Автоматизация Скрипт IT Программирование Гайд Видео Без звука Короткие видео Длиннопост
3
7
ravenmende
ravenmende
28 дней назад
Blender RU

Сделал add-on Sprite Sheet Generator⁠⁠

скачать: https://ravenmende.gumroad.com/l/spritesheetgen

[моё] Blender Аддон Скрипт Генератор Видео Видео ВК
0
5847
krutopal
krutopal
1 месяц назад
IT-юмор

ДЕД ШАРИТ⁠⁠

ДЕД ШАРИТ Картинка с текстом, Мемы, IT юмор, Скрипт, Дед, Внуки, Нейронные сети, Повтор, Арты нейросетей, Контент нейросетей, Зашакалено
Показать полностью 1
Картинка с текстом Мемы IT юмор Скрипт Дед Внуки Нейронные сети Повтор Арты нейросетей Контент нейросетей Зашакалено
122
1
fotopisets
1 месяц назад

Трасса и скрипт⁠⁠

Трасса Матрица Скрипт Машина Совпадение? не думаю Случайность Наблюдение Видео Вертикальное видео
7
1
Аноним
Аноним
1 месяц назад

Ловушка запрещённого⁠⁠

Господа программеры, нейросеть мне набросала скрипт для уведомления о запрещённом и том, за который могут штрафовать материале. Сделан он для того, чтоб посмотреть что будет с интернетом после 1-го сентября.

Так вот будет ли этот пользовательский скрипт работать и что в нём нужно исправить?

// ==UserScript==
// @name  Extremist-Filter Alert
// @namespace  *
// @VERSION  1.1.1
// @Description  Блокирует страницы, содержащие строки из CSV-списка экстремистских материалов.
// @match  *://*/*
// @GrAnt  GM_xmlhttpRequest
// @GrAnt  GM.xmlHttpRequest
// @ConnecT  minjust.gov.ru
// @run-at  document-end
// ==/UserScript==

(() => {
const CSV_URL = 'https://minjust.gov.ru/uploaded/files/exportfsm.csv';
let csvSet = null;

loadCSV();

async function loadCSV() {
try {
// Выбираем правильный API для пользователей GM4 vs TM/VM
const xhrFunc = typeof GM_xmlhttpRequest === 'function'
? GM_xmlhttpRequest
: typeof GM !== 'undefined' && typeof GM.xmlHttpRequest === 'function'
? GM.xmlHttpRequest
: null;

if (xhrFunc) {
xhrFunc({
method: 'GET',
url: CSV_URL,
responseType: 'text',
onload: ({ responseText }) => {
csvSet = parseCSV(responseText);
scanPage();
},
onerror: err => console.error('CSV load error', err)
});
} else {
// fetch может не сработать из-за CORS, но пробуем на тех, у кого он доступен
const txt = await (await fetch(CSV_URL)).text();
csvSet = parseCSV(txt);
scanPage();
}
} catch (e) {
console.error('Ошибка загрузки CSV:', e);
}
}

// Обрезаем всё после и включая слово "решение"
function parseCSV(text) {
return new Set(
text
.split(/\r?\n/)
.map(line => {
const lower = line.toLowerCase().trim();
if (!lower) return '';
// убираем кавычки и разделители, если есть
const firstCol = lower.split(/[;,]/)[0];
const idx = firstCol.indexOf('решение');
return (idx !== -1 ? firstCol.slice(0, idx) : firstCol).trim();
})
.filter(Boolean)
);
}

function scanPage() {
if (!csvSet) return;
const bodyText = document.body.innerText
.replace(/\s+/g, ' ')
.toLowerCase();
for (const phrase of csvSet) {
if (bodyText.includes(phrase)) {
showWarning(phrase);
break;
}
}
}

function showWarning(match) {
if (document.getElementById('extremistOverlay')) return;

const css = `
#extremistOverlay {
position: fixed;
inset: 0;
background: rgba(0,0,0,0.96);
color: #fff;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
z-index: 2147483647;
font: 1.15rem/1.6 system-ui, sans-serif;
}
#extremistOverlay button {
margin: 1rem;
padding: .7rem 2rem;
font-size: 1rem;
cursor: pointer;
}
#extremistOverlay h1 {
max-width: 90vw;
text-align: center;
margin-bottom: 1.2rem;
}
`;
const style = document.createElement('style');
style.textContent = css;
document.head.append(style);

const div = document.createElement('div');
div.id = 'extremistOverlay';
div.innerHTML = `
<h1>Этот материал находится в списке экстремистских материалов. Вам штраф в 5000 рублей. </h1>
<p style="opacity:.8;">Совпадение: <em>${match}</em></p>
<div>
<button id="ext-close">Убрать уведомление</button>
<button id="ext-back">Вернуться назад</button>
</div>`;
document.body.append(div);

// Пытаемся перейти в полноэкранный режим
if (div.requestFullscreen) {
div.requestFullscreen().catch(() => {});
}

document.getElementById('ext-close').onclick = () => {
if (document.exitFullscreen) document.exitFullscreen();
div.remove();
};
document.getElementById('ext-back').onclick = () => history.back();
}
})();

Показать полностью
Нейронные сети Скрипт Реестр запрещенных сайтов Текст Длиннопост
3
CiaphasCain
CiaphasCain
1 месяц назад

Ютуб такой ютуб⁠⁠

Просто захотелось поделиться,и так все понятно уже давно. Все всё знают.Забавно все равно.
Решил почистить браузер в том числе пароли и тд. И вот такие забавы выдает ютуб , до того как залогинился

Ну хоть без двойников,осталось жить 3 дня и тд.
После того как залогинился все стандартно стало. От подписок зависит то что выдает

Показать полностью 1
[моё] Политика YouTube Владимир Путин Дональд Трамп Переговоры Спецоперация Россия США Скрипт Рекомендации Переговоры России и Украины НАТО ООН Видео Без звука Короткие видео Длиннопост
14
7
jacksergeev
2 месяца назад
Серия Создание игр с нуля до эксперта

История о том, как можно учиться неизвестному или попытка создать свою игру⁠⁠

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

У меня всегда были какие-то маленькие способности к рисованию, любовь к программированию и работе над какой-то логикой - это все есть в геймдеве.

Выбор был очевиден: я часто засматривался на Юнити, ведь Unreal Engine - лагающая херота, а Godot не имеет много гайдов и туториалов, и документации в том числе. И вот пошло-поехало.

В сентябре я открыл Юнити, и ... понял, что нихера не знаю( Но я радостно забил на это и открыл ChatGPT, думал, что он все расскажет и покажет. Что одним промптом будет ГТА - нет, это была моя первая ошибка.

Затем так получилось, что я бросил это дело до конца марта... Но мечта была, да и прогать на c# вдруг захотелось. Начал учить C# - по известному всем программистам сайтом метанит (нет, это не злостная реклама сайта @moderator, хватит сносить мои посты). За полторы месяца дошел до принципов ООП - относительно нелёгкая тема) и решил, что пора

Надо было отметить, что за этот учебный год (да, я школьник-спортсмен, который тренируется в одном из СШОР Питера) я несколько раз открывал юнити и закрывал, тк не понимал, что за дела.

Пора приступать к вамой интересной части повествования! Поняв, что я готов, я открыл документацию, юнити, Visual Studio и просто сделал себе цель - расставить блоки, добавить куб, дать передвижение кубу - и платформер готов! Скоко же я потел, непонимал, но я сделал это! Почему-то мне казалось, что это ахиреть какой прорыв. Возможно)

Затем я открыл туториал Breakers и пошел пилить раннер. Уроки старые, но базу дают и убирают неуверенность в движке. Сделал на основе этого очередной раннер-платформер с 1 уровнем, где можно было подрубить Год-мод и полететь!

Наступило время для чего-то сложнее. Сделать крестики-нолики, но я поставил себе 1 цель - там должна быть своя графика. Дано: графический планшет и Фотошоп. Результат - в предыдущем посте. Есть поле, яблоко и банан, что дало название Apples | Bananas. Я потратил плюс-минус 3 дня на это. Через сколько дебрей я прошел! Но это сделано! Выложена первая версия этого, будет добавлено меню, нормальный рестарт, ИИ и улучшение багов.

Так вот, к чему это я. Первое, не сдавайтесь! Понятно, что сразу может ничего не получиться, нужно идти дальше, работая. Второе, понятно, что это не выстрелит, и у каждого есть свои крестики-нолики. Но останавливаться я не собираюсь)

Кстати, этот "гениальный" шедевр можно оценить в моем новом тг-канале. В нем я буду выкладывать все, что знаю, узнал, а также гайды, мемы, новости, ассеты, скрипты и на мои файлы, как сейчас например. Вот ссылка: https://t.me/unitygames3009.

P.S: Спасибо тем ,кто дочитал до конца! @moderator, если снесет и этот пост, у меня подгорит пердак(

Показать полностью
[моё] Начинающий художник Unity Gamedev Творчество Telegram (ссылка) Telegram 2D Photoshop Рисование Компьютерная графика Digital Программирование ChatGPT DeepSeek Дизайнер Сайт Тренд Чат-бот Скрипт Текст
4
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии