Программирование для малышей
Хотел сделать небольшой проект для автоматизации некоторых действий своих, с азами программирования знаком, думал, что быстренько изучу python за месяц, и перейду от изучения к делу.
Прошёл небольшой курс, вроде в общем понятно, увлёкся делом, решил изучить по подробней, и тут я столкнулся с такой проблемой:
многие обучающие материалы ориентированы на школьников. И это бесит. Иногда просто чувствуешь себя идиотом от того, как реализована подача материала. Нередко материалы стилизованы под учебники начальной школы. Но это ерунда.
Некоторые материалы сформулирлваны так, будто объясняют человеку, который недавно научился читать и складывать числа.
Но больше всего у меня вызвало диссонанс описание курса на степике: "php для самых маленьких".
То есть, я так и представляю, сидит карапуз, в одном окне у него открыта азбука, в другом - курс на степике по php, и рядом учебник по нелинейной алгебре.
Давно программированию в яслях стали учить? Я как-то пропустил этот момент.
Как подготовить машину к долгой поездке
Взять с собой побольше вкусняшек, запасное колесо и знак аварийной остановки. А что сделать еще — посмотрите в нашем чек-листе. Бонусом — маршруты для отдыха, которые можно проехать даже в плохую погоду.
Айтишное, понравился комментарий
Стащил в сообществе коллектива «Научно-технический рэп». Кстати, людям от IT может быть интересно послушать их творчество, которое часто жизненно. Несколько треков есть в Яндекс.Музыке, в ВК тоже есть.
Работа с UART в LINUX + PHP
требуется помощь лиги IT
Делаю небольшую поделку - проект умного дома.
В основе ардуино + одноплатник orangepi zero
на одноплатнике стоит armbian и поднят httl сервер.
на сервере страничка с кодом ajax по таймеру делает запрос через php и соответственно получает ответ. все работает до тех пор, пока есть ответ.
если ответа нет, то на третьем-четвертом запросе сервер наглухо виснет.
запрос делаю так (пробовал все три варианта):
$bufft = fgets($fp,7);
//$bufft = fread($fp,7);
//$bufft = stream_get_line($fp,7); + //stream_set_timeout($fp, 0, 15000);
(где: $filename = "/dev/ttyS1"; //порт $fp = fopen($filename, "w+"); )
Насколько я понимаю, проблема в том, что при отсутствии ответа в буфере /dev/ttyS1 нет вообще ничего, те нет в файле даже символа конца строки (файла). и считывание идет по бесконечному циклу, пока не повесит процесс.
Экспериментально установлено, что при запросе $bufft = fgets($fp,1); , те при попытке считать только первый символ строки ничего не виснет, но возвращается строка из 0 символов. те полностью пустая.
Посоветуйте, как перед считыванием буфера определить, что он пуст (при попытке считывания он стирается) или как считывать пустой буфер/dev/ttyS1 без последующего зависания?
Как ChatGPT 3.5 помог мне написать шорткод для Вордпресс?
Немного истории... Короче говоря есть страница к примеру: "котята". И есть несколько дочерних: белые серые и т.д. У меня на 1 из сайтов таких, дочерних страниц 201. Параллельно есть таксономии привязанные к типу поста "котята" который не индексируется. Он нужен только для распределения котят по категориям с последующим выводом на страницах в собственном шаблоне и не больше.
Так вот, после публикации и распределения условных "котят" по категориям, нужно было выводить их на соответствующих страницах.
Маленькое уточнение! Я не супер в PHP но базовое понятие функций движка Wordpress есть, так что как поставить задачу чату проблем не возникло. Почему решил написать эту статью спросите вы? Отвечаю: по началу трудно всем и может именно эта статья даст толчок некоторым новичкам, так как сам процесс, очень интересен и познавателен, и ChatGPT объясняет что, где и за что отвечает и куда это все совать. Гуру вам этого не скажут бесплатно;)
Вывод количества на фронтенд: кодинг с помощью ChatGPT 3.5
Для мотивации конечный результат на фронтенде... https://vse-mikrozaymy.ru/summy/
Мне нужно было вывести количество из каждой категории (циферки что в кружке). Это пример. Так можно сделать для любого типа поста к примеру (товаров), чтобы не нагружать движок плагином WOOCOMERCE и т.д.
Итак моя переписка с ChatGPT и примерами кода (может кому пригодится)
Я. Привет! Сможешь написать шорткод для вордпресс?
ChatGPT. Привет! Конечно, я могу помочь с написанием шорткода для WordPress. Что именно вы хотели бы добавить с помощью шорткода?
Я. У меня есть taxonomy=summ, в ней есть есть tag_ID=253, tag_ID=242 и т.д. Нужно написать шорткод для подсчета количества постов, привязанных к определенным id или slug в таксономии.
ChatGPT. Конечно, вот пример шорткода для подсчета количества постов по заданным tag_ID или slug в таксономии summ:
function count_posts_in_taxonomy_shortcode($atts) { // Парсим атрибуты шорткода $atts = shortcode_atts(array( 'tag_id' => '', 'slug' => '', ), $atts, 'count_posts_in_taxonomy'); // Параметры запроса $args = array( 'post_type' => 'post', // Укажите нужный тип записи, если это не статьи 'post_status' => 'publish', 'tax_query' => array( array( 'taxonomy' => 'summ', 'field' => is_numeric($atts['tag_id']) ? 'id' : 'slug', 'terms' => $atts['tag_id'] ? $atts['tag_id'] : $atts['slug'], ), ), ); // Получаем количество постов $post_count = count(get_posts($args)); // Возвращаем результат return $post_count; } // Регистрируем шорткод add_shortcode('count_posts_in_taxonomy', 'count_posts_in_taxonomy_shortcode');
Как использовать шорткод:
Если вы хотите подсчитать количество постов для tag_ID=253, используйте [count_posts_in_taxonomy tag_id="253"].
Если вы хотите подсчитать количество постов для slug='example', используйте [count_posts_in_taxonomy slug="example"].
Убедитесь, что код добавлен в файл functions.php вашей темы или в плагин для пользовательского кода.
Я. Спасибо! Ты гений!
ChatGPT. Пожалуйста! Рад был помочь! Если у вас есть ещё вопросы или нужна дополнительная помощь, не стесняйтесь спрашивать. Удачи с вашим проектом WordPress!
Я. А можно как-то укоротить код
ChatGPT. Конечно, можно упростить код, используя более компактные конструкции. Вот более краткая версия:
function count_posts_in_taxonomy_shortcode($atts) { $atts = shortcode_atts(['tag_id' => '', 'slug' => ''], $atts, 'count_posts_in_taxonomy'); $args = [ 'post_type' => 'post', 'post_status' => 'publish', 'tax_query' => [[ 'taxonomy' => 'summ', 'field' => is_numeric($atts['tag_id']) ? 'id' : 'slug', 'terms' => $atts['tag_id'] ?: $atts['slug'], ]], ]; return count(get_posts($args)); } add_shortcode('count_posts_in_taxonomy', 'count_posts_in_taxonomy_shortcode');
В этой версии я использовал более сжатый синтаксис массивов и оператор условия с тернарным оператором для укорачивания кода. Все функциональные части остаются теми же. Если у вас есть какие-либо вопросы или нужны дополнительные пояснения, дайте знать!
Я. Не работает! Выводит правильно только первые 2 категории а в остальных выводит цифру 5
ChatGPT. Приношу извинения за это недоразумение. Проблема, вероятно, связана с тем, что в запросе используется параметр terms, который ожидает одно значение. Если вам нужно передать несколько значений, вы можете использовать IN вместо конкретного значения. Вот обновленный код, который должен решить проблему:
function count_posts_in_taxonomy_shortcode($atts) { $atts = shortcode_atts(['tag_id' => '', 'slug' => ''], $atts, 'count_posts_in_taxonomy'); $terms = $atts['tag_id'] ? (array) $atts['tag_id'] : [$atts['slug']]; $args = [ 'post_type' => 'post', 'post_status' => 'publish', 'tax_query' => [[ 'taxonomy' => 'summ', 'field' => is_numeric($atts['tag_id']) ? 'id' : 'slug', 'terms' => $terms, ]], ]; return count(get_posts($args)); } add_shortcode('count_posts_in_taxonomy', 'count_posts_in_taxonomy_shortcode');
Теперь код преобразует переданные значения в массив и использует их в параметре terms запроса. Надеюсь, это решит проблему. Если у вас есть ещё вопросы или проблемы, дайте знать!
Я. Проблема та же. Я использую несколько шорткодов на 1 странице.
ChatGPT. Понял, проблема может быть связана с тем, что запросы могут взаимодействовать друг с другом, особенно если они используют общие ресурсы. Давайте попробуем улучшить код для более надежного использования в множественных вызовах:
function count_posts_in_taxonomy_shortcode($atts) { $atts = shortcode_atts(['tag_id' => '', 'slug' => ''], $atts, 'count_posts_in_taxonomy'); $tax $field = is_numeric($atts['tag_id']) ? 'id' : 'slug'; $terms = $atts['tag_id'] ? [(int) $atts['tag_id']] : [$atts['slug']]; $args = [ 'post_type' => 'post', 'post_status' => 'publish', 'tax_query' => [ [ 'taxonomy' => $taxonomy, 'field' => $field, 'terms' => $terms, ], ], ]; $query = new WP_Query($args); return $query->found_posts; } add_shortcode('count_posts_in_taxonomy', 'count_posts_in_taxonomy_shortcode');
В этой версии я заменил get_posts на WP_Query, чтобы иметь больше контроля над запросом. Также добавлены некоторые дополнительные параметры, чтобы убедиться, что каждый вызов шорткода работает независимо. Пожалуйста, протестируйте этот вариант и дайте знать, работает ли он в вашем случае.
Я. Вот теперь точно красавчик!!! Все заработало! Спасибо большущее!
ChatGPT. Отлично! Рад был помочь! Если у вас возникнут ещё вопросы или вам потребуется дополнительная помощь, не стесняйтесь обращаться. Удачи в вашем проекте!
Вот такой результат! Что хочется сказать в завершение: результат каждого зависит только от его фантазий так что однозначно не нужно боятся экспериментировать. Я бы и сам написал этот код, но пришлось бы потерять в 5 раз больше времени и каждый раз перечитывать кодекс WP или WP КАМУ. Спасибо за внимание! Деление опытом и идеи приветствуются!