Вчера я завершил работу над первым уроком в рамках курса. Видео версию можно на моем канале Youtube посмотреть. А здесь версия для желающих изучать материал в виде статьи. Сразу предупрежу, что это сценарий, а не полноценно проработанный материал для чтения, т.е. материал на этой странице предполагает, что видео все равно нужно будет просмотреть. Хотя некоторые вещи, возможно, удобнее будет проработать с этим текстовиком.
Сценарий урока
Скорее всего, вы уже не раз слышали про то, что джуны в программировании уже не особо нужны и что их очень скоро сможет заменить ИИ? Давайте проверим, так ли это и попробуем написать реальную прикладную программу, которую вы сможете использовать в своей жизни, ориентируясь только на бота.
Записать этот ролик, да и весь курс, который за ним последует, меня вдохновил один знакомый, который не являясь программистом и обладая нулевыми навыками программирования сам написал программу бота с некоторыми простейшими функциями для телеграм. Отмечу только, и это очень важно, что этот человек имеет техническое образование и в целом обладает развитым кругозором.
Что касается кругозора и его важности я еще буду много раз возвращаться и говорить об этом, но сегодня цель нашего занятия — посмотреть, действительно ли возможно написать работающую реальную программу, обладая лишь навыками промтинга и некоторым кругозором.
Дело в том, что для того, чтобы использовать бота по полной, вам как ни крути нужны какие-то знания. Нельзя научить человека вычислять дроби если он еще не знает таблицы умножения. Пример может быть и грубый, но суть отражает верно.
Это видео — первое занятие в рамках большого курса “Программирование для НЕпрограммистов”, на котором я подробно, пошагово, беру человека далекого от программирования и провожу его по необходимым навыкам работы с чат бот GPT и оснащаю тем самым минимальным техническим кругозором, чтобы он был в состоянии решать программные задачи на практике с помощью навыка промтинга далее самостоятельно. Уроки в курсе будут на примерах языка Python, но на этом первом занятии мы будем писать на PHP. Вообще, при наличии бота, и тех навыков, которые вы получите, пройдя курс, появится понимание, что не очень важно, на каком языке вы будете писать. Куда более важно будет ваше понимание, на что способен тот или иной язык, какие возможности у того или иного фреймворка. Это главное.
Я обожаю выражения:
Не боги горшки обжигают
Не бойся делать того, что не умеешь. Помни, что Титаник строили профессионалы, а ковчег любитель
Действительно, в нашей обычной жизни, в бизнесе и на работе, навык программирования может очень сильно повысить стоимость вашего часа работы.
Копирайтер, которые просто быстро пишет — может написать статью по знакомой ему тематике за полтора часа… Если владеет навыками промтинга, то даже на незнакомую тематику можно статью аналогичного качества написать в три раза быстрее с учетом проверок, корректировок и внесения в нее той самой изюминки, на которую способен только человек.
Или предположим, вы руководитель… У любого руководителя стоит задача повышения эффективности своего подразделения: продавать больше, тратить на задачи меньше времени или делать тот же объем, но быстрее или дешевле…
С наличием технического кругозора, у вас появится возможность понимания что можно автоматизировать, а что нет и какие ресурсы это может занять. Короче, чем бы вы не занимались, навык программирования сложно переоценить.
Ну и для тех, кто хочет войти в айти с помощью каких-то курсов, то этот курс вам поможет вам понять, а ваше ли оно вообще? Может стоит остановиться на том, чтобы научиться только для расширения кругозора. Ну или может захотите учиться дальше и профессионально расти в IT отрасли. Благо, видеть путь и обладать некоторой базой для решения практических задач вы уже будете.
Открою вам страшную тайну, БОльшая часть задач, которые нужно решать в бизнесе, не требует навыков работы высококвалифицированных программистов способных проектировать масштабируемые высоконагруженные системы. Там действительно, нужно много специфических знаний и тысячи часов практики.
Но то, что обычно выполняют джуны, можно написать кому угодно, при наличии навыков промтинга и технического кругозора.
Итак, давайте напишем программу.
Что мы с вами будем писать? Для примера я взял очень простую, но вполне реальную задачу, которую вы сможете использовать для себя сразу уже после этого урока. Она значительно сложнее Пресловутого Привет мир и может дать вам реальную пользу.
Допустим, я хочу иметь какую-то таблицу в онлайн, в которой хранятся поговорки и афоризмы, которые мне хорошо заходят, и я хочу, чтобы каждое утро в 10 часов ровно, бот присылал мне случайный афоризм или поговорку из тех, которые находятся в этой таблице.
Идея в том, что вы хотите иметь легкий способ редактировать эту таблицу из любого места — добавлять туда новые афоризмы или анекдоты, например, с телефона.
Давайте попробуем. В данном примере, я подразумеваю, что вы знаете, что такое хостинг, вы знаете, что такое командная строка ssh. Если тут испугались, то ничего страшного, никакой жести… это не значит, что вы знаете команды Linux, а просто понимаете, что такое командная строка и что исполняемые скрипты можно из нее запускать. Впрочем, даже если не знаете, об этом всем я как раз и буду рассказывать далее на курсе. Цель сегодняшнего урока посмотреть, насколько просто можно написать реальную программу с помощью бота.
Дано:
- Таблица Google docs онлайн с разрешением редактирования по ссылке (для простоты)
- Установленный телеграм
- Наличие хостинга на timeweb (рефссылка)
Погнали.
Предположим, я не знаю, с чего начать. Что делать? Да не вопрос, давайте спросим у бота.
Тут главное, обеспечить бота нужным контекстном задачи.
Вот мой промт. Ребят, смотрите, это очень важно. Пишем как если вы самый последний душнила на планете:
У меня есть сервер, на котором я могу запускать php, также у меня есть Google docs таблица, которая открыта для чтения по адресу URL. В таблице в первом столбце имеются строчки с текстом. и я хочу чтобы каждое утро в 10 часов ровно, бот в телеграм присылал случайный аформизм или поговорку из тех, которые находятся в этой таблице.
И самое важное - напиши план действий.
Ждем ответ. Далее я получаю адекватный ответ: зачитывать не буду. Но очень рекомендую, остановить видео и прочитать ответ бота.
, что ваш сервер всегда включен и настроен правильно, чтобы скрипт выполнялся по расписанию.
Вот тут остановимся подробнее. Это хороший пример, чтобы продемонстрировать, что я подразумеваю, когда говорю “технический кругозор”. То, что ответил мне бот — это базовые вещи, которые просто необходимо понимать… что это такое? о чем вообще речь? Т.е. вы должны знать, что такое сервер, что такое API и вас не должны пугать эти все аббривиатуры… вспоминаем “Не боги горшки обжигают” и гуглим или же уточняем у бота, что скрывается за незнакомыми словами или аббревиатурами.
Первым пунктом у нас Создание бота, если его еще нет. Допустим, я не знаю, как его создавать, и я хочу получить ответ здесь и сейчас.
“Как создать бота в телеграм?”
Для реализации вашей идеи, вам потребуется несколько шагов. Вот план действий: Создайте бота в Telegram, используя Telegram Bot API. Вы можете найти инструкции по созданию бота в документации Telegram. Настройте сервер, чтобы он мог запускать PHP-скрипты. Убедитесь, что ваш сервер поддерживает выполнение скриптов PHP и установлен необходимый софт. Создайте PHP-скрипт, который будет запускаться по расписанию каждое утро в 10 часов. В этом скрипте вы будете получать случайный афоризм или поговорку из вашей Google Docs таблицы и отправлять его в ваш бот в Telegram. Для работы с Google Docs таблицей из PHP-скрипта, используйте Google Sheets API. Вам потребуется создать учетные данные и настроить доступ к вашей таблице через API. Документация Google Sheets API поможет вам в этом. В PHP-скрипте, используйте Google Sheets API для получения случайного афоризма или поговорки из вашей таблицы. Вы можете использовать функцию rand() для выбора случайной строки из столбца с текстом. Используйте Telegram Bot API для отправки полученного афоризма или поговорки в ваш бот в Telegram. Вы можете использовать метод sendMessage для отправки сообщения с текстом. Настройте cron-задачу на вашем сервере, чтобы PHP-скрипт запускался каждое утро в 10 часов. Используйте команду crontab для добавления задачи в расписание. После выполнения всех этих шагов, ваш бот в Telegram будет отправлять случайный афоризм или поговорку каждое утро в 10 часов. Убедитесь
Чтобы создать бота в Telegram, вам потребуется следовать нескольким шагам:
Откройте приложение Telegram и найдите бота с именем «BotFather».
Начните диалог с BotFather, нажав на кнопку «Start».
Введите команду «/newbot» для создания нового бота.
Следуйте инструкциям BotFather, чтобы выбрать имя и уникальное имя пользователя для вашего бота.
После успешного создания бота, BotFather предоставит вам токен доступа. Обязательно сохраните этот токен, поскольку он понадобится вам позже.
Теперь у вас есть бот в Telegram, и вы можете использовать его для отправки и получения сообщений.
“У меня есть Google docs таблица, которая открыта для чтения по адресу URL. В таблице в первом столбце имеются строчки с текстом. Напиши php скрипт, который считает эти данные в массив, распечатает результат, затем выберет случайное значение и поместит в переменную. Оснасти каждый оператор комментарием, что он выполняет.”
Давайте разберемся, что мы ему задали? Мы задали очень подробное ТЗ, которое нельзя трактовать неправильно. Это очень важно. Вы должны быть точными, и именно поэтому, декомпозиция любой крупной задачи на маленькие подзадачи все равно останется в ближайшем будущем на вас.
Т.е. понимание, как работает система пошаговых инструкций и как машина ее выполняет, у вас либо должно быть, либо мы его с вами изучим далее на курсе.
Задаем промт…
и вот еще момент — причина, почему вам нужно будет научиться общаться по английски. Он гораздо лучше понимает и пишет код, если формировать промты на английском языке. Хорошая новость в том, что если вы пишете промты для кодинга — набор фраз, как вы будете описывать задачи, очень ограничен и даже при наличии у вас уровня b1 вы быстро научитесь их писать самостоятельно, или же переводя промты с помощью того же бота, чтобы он лучше их понял.
Кстати, буквально пару дней назад я выкладывал видео, как работать с ботом для изучения иностранных языков, и английского в частности. Если актуально, рекомендую к просмотру. В моем канале несложно найти
То, что он написал — тупо нечитабельно, хотя на первый взгляд, тоже должно работать
Давайте напишем тоже самое по английски, я даже не парюсь и просто перевожу свой промт с помощью бота.
"I have a Google Docs spreadsheet that is open for reading at a URL address. The first column of the spreadsheet contains rows of text.
Write a PHP script that reads this data into an array, prints the result, then selects a random value and stores it in a variable.
Annotate each operator with a comment explaining what it does."
Sure, here is a PHP script that accomplishes the task you described:
Получаем шикарный ответ
<?php
// Set the URL address of the Google Docs spreadsheet
$url = 'https://docs.google.com/spreadsheets/d/your_spreadsheet_id/export?format=csv';
// Get the contents of the spreadsheet
$contents = file_get_contents($url);
// Convert the contents into an array
$data = str_getcsv($contents, "\n");
// Print the result
print_r($data);
// Select a random value from the array
$randomValue = $data[array_rand($data)];
// Print the selected random value
echo $randomValue;
?>
In this script, we start by setting the URL address of the Google Docs spreadsheet. Then, we use the file_get_contents() function to retrieve the contents of the spreadsheet.
Next, we convert the contents into an array using the str_getcsv() function. This function splits the contents into an array using the newline character as the delimiter.
We then use the print_r() function to print the resulting array. This allows us to see the data that was read from the spreadsheet.
After that, we use the array_rand() function to select a random value from the array and store it in the $randomValue variable.
Finally, we use the echo statement to print the selected random value.
Please make sure to replace 'your_spreadsheet_id' in the URL with the actual ID of your Google Docs spreadsheet.
Возращаемся к тому, что написал бот. Читаем ответ. Копируем — вот тут есть удобная кнопочка специально для кода. Сохраняем полученный код в ответе файл с расширением php. Интерпретатор PHP выполняет файл только с таким расширением и требует определенного синтаксиса — открытия кода вопросительным знаком со скобочкой и аналогичным закрытием.
Если вы этого не знали — можете остановить видео и самостоятельно отправить боту полученный код и спросить — как мне назвать файл с таким содержимым? Это прямо готовый промт. А давайте прямо сделаем это — благо, штука не сложная. Вот он отвечает. Ставим на паузу читаем. Там как раз идет объяснение, почему расширение именно такое.
Вникаем в каждый комментарий. Дело в том, что бот не всегда сможет вам выдавать 100% работающий код, т.к. у него часто не будет хватать контекста, поэтому то, что он вам пишет, придется научиться понимать. Благо, по любой строчке его можно попросить не только написать комментарий, но и дать развернутый ответ, вплоть до справки здесь и сейчас, что этот конкретный оператор делает и как работает.
Хорошие новости в том, что читать и править код куда проще, чем писать его с нуля. Особенно это касается каких-то сложных манипуляций с данными, где нужно делать одновременно манипуляции с несколькими массивами и надо выцепить какую-то часть данных в зависимости от каких-то сложных условий. С одной стороны, это скорее рутина, с другой, штука, которая требует достаточно много усилий и концентрации программиста. И в таких случаях бот выручает на ура.
Давайте посмотрим. Сначала он помещает в переменную $url адрес — куда заходить. Т.е. где наша таблица. Затем прямо забирает эту таблицу также в переменную и последующим оператором разбивает его на массив.
Ну что же, сохраняем файл. Теперь давайте попробуем проверить… Давайте пройдемся по строчкам и постараемся понять, что он делает, благо мы оснастили его комментариями, что делает каждая строчка.
Если вы такие вещи знаете — отлично, если нет, то далее в курсе будем рассматривать. Как впрочем и некоторые базовые вещи, чтобы иметь возможность читать код вне зависимости от языка программирования, на котором вы попросили бота работать с вами.
Сейчас я загружаю файл с помощью FTP клиента на арендованный сервер с недорогим хостингом на Timeweb. Тоже отмечу, что настоящие разработчики таким образом не работают с файлами — я про блокнот и Far manager — есть куда более удобные инструменты, которые мы будем рассматривать в рамках продвинутого курса.
Вообще, следующее занятие будет уже куда более подробным в плане таких мелочей и мы начнем с вами с того, что настроим рабочее окружение Python для работы локально на вашей машине.
Файл я загрузил куда-то на сервер. На timeweb есть закладка в инструментах, что можно зайти без лишних движений в командную строку linux. Это находится здесь. Заходим. Далее ищем файл. Вводим команду ls (это команда “распечатать файлы в текущей директории”). По командам линукс как подойдет время сделаем отдельный урок. Если вы не профессиональный администратор Linux, то команды в большинстве своем вы не запомните — их несколько сотен. При этом мало из них имеют такой простой синтаксис. Профессиональные программисты обычно помнят очень небольшой набор таких команд… но самое главное, они знают! какие команды существуют, какие у них возможности… и могут быстро найти синтаксис нужной им команды. В реалиях нашего времени — это куда более важно.
Вот наш файл. Давайте запустим его. Удивительно! работает. Посмотрите.
Скрипт вывел на экран случайно выбранную строчку из тех, что в моей таблице. Если я буду последовательно запускать скрипт, вы сможете в этом убедиться.
Тут остановимся еще раз. Чтобы курс давал максимальную пользу, вам нужно иметь доступ к боту GPT и повторять то, что делаю я, а также иметь все сопутствующие программы и сервисы. В примере нужно иметь Far или любой другой FTP клиент. Если не знаете, что это такое, то останавливаем видео, гуглим или спрашиваем у бота. Это очень простая вещь.
Доступ к боту. Если у вас есть — отлично. Если же нет, то можете получить его бесплатно. В описании есть ссылка на мой телеграм канал и конкретно на пост, где я даю инструкцию, как получить доступ к чат GPT, с помощью которого выполняю все эти действия (внизу поста по ссылке в разделе «Полезное«).
Хостинг, которым я пользуюсь — у меня есть рефссылка в описании к этому видео. Можно взять самый недорогой тариф и активировать пробный бесплатный период — у них 10 дней можно пользоваться бесплатно, поэтому можете зарегистрироваться и повторить все то, что я делаю на этом уроке. В целом, ближайшие задачи, которые мы будем решать в рамках курса не потребуют доступа к серверу, поэтому оплачивать прямо сейчас нужды нет.
Ну и еще важная вещь — все промты, которые я использую в этом видео, чтобы их не набирать, они тоже есть в виде текста. Ссылку на тексты промтов к этому видео вы сможете найти в описании.
Погнали дальше.
Давайте теперь перейдем ко второй части написания скрипта, нам нужно отправить эти данные в бота телеграм.
Пишем боту промт. Тут уже сразу буду писать на английском языке
i have a text string. give me the most simple PHP script to send the string into my chat with telegram bot
И снова, отмечаю, что я схитрил и в промте написал «максимально простой». Оно будет работать, при этом в ит компании джуна за такой код распнут прилюдно. Далее по курсу я буду объяснять некоторые принципы, которые позволят сразу вырабатывать хорошие привычки. Ну на случай, если вы захотите далее изучать программирование, чтобы не было мучительно больно за прошедшие годы.
Смотрим, что получаем.
А… вот еще прием, если вы не понимаете, что код делает. Вставляем его код и добавляем, explain what this code do.
Вот он расписывает, ставим видео на паузу, вникаем. А еще лучше сами проделывайте то, что делаю я.
Чего-то у нас не хватает. Не хватает нам id чата. У каждого чата в телеграм есть уникальный номер, по которому можно к небу обратиться: считать или отправить данные. Наша задача узнать этот номер.
Давайте здесь я воспользуюсь поиском. Открываем яндекс и пишем «как определить id чата в телеграм»?
Мог ли я найти ответ с помощью бота? Да, мог. Однако, в данном конкретном случае я хочу подчеркнуть, что пользоваться поиском тоже надо будет уметь. В курсе далее, будет блок продвинутого поиска с использованием спец операторов. Это, кстати, тоже очень полезный навык. Например, можно найти полные версии книг даже в том случае, если кажется, что полной версии нигде нет, а везде они только представлены ознакомительными фрагментами.
Во второй ссылке указан бот get my id и инструкция по использованию. Я должен форваднуть в него любое сообщение из нужного мне диалога и он сможет выдать информацию по этому диалогу.
Давайте попробуем. Вот я отправляю в искомом диалоге любое сообщение и делаю пересылку.
Вот наш id. Вставляем его в скрипт и пробуем отправить.
Ну вот результат. Скрипт не только вывел в консоль случайную запись, но и послал мне сообщение.
Осталось последнее — настроить отправку каждое утро. В данном примере я использую хостинг на timeweb. Как вариант, можно купить самый дешевый тариф для тренировки — ссылку на хостинг я дам в описании к этому видео.
Интерфейс настройки планировщика в разных панелях управления может отличаться. В целом, все эти интерфейсы просто отображают содержимое специального системного файла crontab. Разные версии linux систем имеют некоторые различия, а сами записи крон заданий имеют определенный формат, который позволит задать периодичность запуска.
В рамках этого занятия подробно останавливаться на это не будем. Это все далее.
В тайвеб интерфейс выглядит так. Вы должны указать команду и время с периодичностью запуска.
В нашем случае надо команду писать с полным путем. С ботом вам не обязательно помнить эти команды — важно знать о возможностях и ограничениях. В Линукс несколько сотен команд со сложным синтаксисом и кучей опций. Если вы знаете, что такое существует и умеете это быстро найти, это и есть кругозор.
Спрашиваем у бота
how to define full current path in SSH terminal?
Читаем ответ
To define the full current path in an SSH terminal, you can use the "pwd" command. "pwd" stands for "print working directory" and it displays the full path of the current directory you are in. Simply type "pwd" in the terminal and press enter, and it will show you the complete path of the current directory you are in.
Конечно, конкретно эта команда простая и я ее даже помню, а ботом воспользовался ради демонстрации.
Ну что же, друзья, все готово. Ставим время на пару минут вперед и ждем, чтобы проверить
Все. Сообщение получено, а ручки вот они. Вот так, с помощью бота мы написали реальную программу. Для кого-то этого уже хватит, чтобы понять, какое количество всякой всячины нужно изучить, чтобы заставить машину работать на вас.
В планах курса много интересного: парсинг данных, интеграция со всевозможными api, работа с ии, программная генерация картинок и даже создание автозаполняемых сайтов.
Это был вводный урок в рамках курса программирование для НЕ программистов.
В следующем уроке мы настроим рабочее окружение с помощью бота, чтобы можно было разрабатывать приложения с помощью python локально на вашем пк
В случае, если вы смотрите это видео, а я все еще продолжаю писать курс, то у вас все возможности поучаствовать в его дальнейшем формировании.
Пишите в комментариях, что понравилось, а что по вашему, мне стоит изменить в подаче материала.
Пишите о своих пожеланиях, задавайте вопросы по предстоящим выпускам. По возможности буду отвечать.