Сейчас каждая операционная система имеет разделение на пользовательский режим и режим ядра, в этой статье разбирается ядро Linux и его модули.
Архив автора: admin
Перспективные технологии будущего
Цивилизация развивается, и наука не перестает нас удивлять. Открытия происходят повсеместно, технологии меняют нашу жизнь. Новейшие изобретения делают быт людей комфортнее, безопаснее, создавая условия для дальнейшего развития общества. Все большее значение приобретают компьютерные технологии. Читать
Следующая итерация Rust в Linux 6.2 возрождает споры о замене C на Rust

Интеграция Rust в Linux получила высокую оценку сообщества и разработчиков.
Одной из основные проблемы, возникшие при разработке ядра Linux в течение длительного времени, это идея найти идеального кандидата для смены языка программирования «C» для более современного, и до недавнего времени с появлением Rust эта идея не прекращалась.
С первым предварительным просмотром Rust на линукс 6.1, Поднимаю настроение большой части разработчиков из ядра, и Джонатан Корбет отмечает, что «в ядре по-прежнему будет недостаточно Rust, чтобы делать что-то интересное», включение этого языка вновь разожгло дебаты о необходимости отказа от языка C в пользу Rust с точки зрения системного программирования. Этот вопрос разделяет сообщество разработчиков.
Zulip 6 приходит с уведомлениями о прочтении, пометкой сообщений как непрочитанных и многим другим

Zulip — это приложение для командного чата с открытым исходным кодом, предназначенное для помощи людям в совместной работе.
Спустя чуть более 6 месяцев с момента последнего выпуска, анонсирован запуск новой версии Zulip 6, серверная платформа для реализации корпоративных мессенджеров, подходящая для организации общения между сотрудниками и командами разработки.
Система поддерживает прямые сообщения между двумя людьми и групповые обсуждения. Zulip можно сравнить с сервисом Slack и рассматривать как внутрикорпоративный аналог Twitter, который используется для общения и обсуждения рабочих вопросов в больших группах сотрудников.

WooCommerce – изображение по ссылке для внешних/партнёрских товаров
Для сайтов с большим количеством партнёрских товаров можно не загружать изображения на хостинг, а использовать фотографию по ссылке.
Плюс – экономим место на хостинге. Помните, что WordPress при загрузке изображения, создаёт от 3 и выше копий разных размеров. Это нужно для оптимизации загрузки изображений на различных страницах сайта. Используя внешнее изображение, вы не создаёте лишние копии.
Минус – адрес изображение со временем может измениться, поэтому нужно эту ситуацию отслеживать. Фото может быть удалено, переименовано, перенесено на другой адрес или по другим причинам.
Этапы работы:
- создаём произвольное поле, в котором будем хранить url изображения
- включаем сохранение информации в базу данных
- выводим изображение в карточке товара
- Добавим произвольное поле в “Данные о товаре” на вкладку “Основные”:
add_action( 'woocommerce_product_options_pricing', 'usota_add_to_products_external_image_url' );
function usota_add_to_products_external_image_url() {
woocommerce_wp_text_input( array(
'id' => '_external_image_url',
'class' => 'short',
'label' => 'Image URL',
'data_type' => 'url',
));
}

2. Включаем сохранение данных:
add_action( 'save_post_product', 'usota_save_external_image_url' );
function usota_save_external_image_url( $product_id ) {
global $typenow;
if ( 'product' === $typenow ) {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
if ( isset( $_POST['_external_image_url'] ) ) {
update_post_meta( $product_id, '_external_image_url', $_POST['_external_image_url'] );
}
}
}
3. Выводим на странице товара. Также добавим Alt-текст для изображения.
add_filter( 'woocommerce_single_product_image_thumbnail_html', 'usota_public_image_external_image', 100, 2 );
function usota_public_image_external_image( $html, $post_thumbnail_id ) {
global $product;
if ( ! $product->is_type( 'external' ) ) return $html;
$external_image_url = get_post_meta( $product->get_id(), '_external_image_url', true );
if ( $external_image_url ) {
$alt_text = $product->get_title();
$html = '<div class="woocommerce-product-gallery__image--placeholder">';
$html .= sprintf( '<img src="%s" alt="%s" class="wp-post-image" />', esc_url( $external_image_url ), $alt_text );
$html .= '</div>';
} else {
$html = '<div class="woocommerce-product-gallery__image--placeholder">';
$html .= sprintf( '<img src="%s" alt="%s" class="wp-post-image" />', esc_url( wc_placeholder_img_src( 'woocommerce_single' ) ), esc_html__( 'Awaiting product image', 'woocommerce' ) );
$html .= '</div>';
}
return $html;
}
Конечно, это не закроет полностью вопрос по изображению для внешнего/партнёрского товара. Нам по-прежнему нужна миниатюра, чтобы показывать товар в категории, в админке или на других страницах сайта.
Но можно загрузить только уменьшенную копию. Этого будет достаточно, чтобы товары смотрелись красиво, но и фотографии много места не занимали.
Весь код полностью, чтобы сразу добавить в functions.php
/**
* Выводим изображение в карточке товара по внешнией ссылке
* для внешних/партнёрских товаров
*/
// Добавляем произвольное поле external_image_url в данные о товаре
add_action( 'woocommerce_product_options_pricing', 'usota_add_to_products_external_image_url' );
function usota_add_to_products_external_image_url() {
woocommerce_wp_text_input( array(
'id' => '_external_image_url',
'class' => 'short',
'label' => 'Image URL',
'data_type' => 'url',
));
}
// Сохраняем произвольное поле external_image_url
add_action( 'save_post_product', 'usota_save_external_image_url' );
function usota_save_external_image_url( $product_id ) {
global $typenow;
if ( 'product' === $typenow ) {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
if ( isset( $_POST['_external_image_url'] ) ) {
update_post_meta( $product_id, '_external_image_url', $_POST['_external_image_url'] );
}
}
}
// Выводим external_image_url в карточке товара на месте изображения товара
add_filter( 'woocommerce_single_product_image_thumbnail_html', 'usota_public_image_external_image', 100, 2 );
function usota_public_image_external_image( $html, $post_thumbnail_id ) {
global $product;
if ( ! $product->is_type( 'external' ) ) return $html;
$external_image_url = get_post_meta( $product->get_id(), '_external_image_url', true );
if ( $external_image_url ) {
$alt_text = $product->get_title();
$html = '<div class="woocommerce-product-gallery__image--placeholder">';
$html .= sprintf( '<img src="%s" alt="%s" class="wp-post-image" />', esc_url( $external_image_url ), $alt_text );
$html .= '</div>';
} else {
$html = '<div class="woocommerce-product-gallery__image--placeholder">';
$html .= sprintf( '<img src="%s" alt="%s" class="wp-post-image" />', esc_url( wc_placeholder_img_src( 'woocommerce_single' ) ), esc_html__( 'Awaiting product image', 'woocommerce' ) );
$html .= '</div>';
}
return $html;
}
Сообщение WooCommerce – изображение по ссылке для внешних/партнёрских товаров появились сначала на Веб-студия Юсота.
Source: usota.ru woocommerce
Решено: Python не находит модуль или пакет на VPS
Запускаешь скрипт на локальной машине – всё работает. Переносишь проект на VPS – выдаёт ошибку ModuleNotFoundError: No module named ‘app’. Ошибка возникает, потому что интерпретатор не находит модуль в системе.
Для решения этой проблемы нужно указать полный путь к проекту:
import os
import sys
sys.path.append(os.path.abspath("../.."))
Как проверить, что путь указан верно? Напечатаем:
print(os.path.abspath("../.."))
В результате мы должны получить полный путь к нашему проекту в системе.
Сообщение Решено: Python не находит модуль или пакет на VPS появились сначала на Веб-студия Юсота.
Source: usota.ru python