Как стать автором
Обновить
436.84

Open source *

Открытое программное обеспечение

Сначала показывать
Порог рейтинга

Joomla-разработчикам: обращение к методам модели в HtmlView напрямую

Когда-то, давным-давно в одной далёкой галактике кто-то решил, что было бы неплохой идеей ввести в Joomla косвенный доступ к методам модели (MVC) для получения данных, добавив метод AbstractView::get(). Этот метод извлекает модель и затем запускает get(). Простыми словами, когда мы во View (файл HtmlView нашего компонента) видим конструкцию $this->item = $this->get('Item') это означает обращение к методу getItem() модели для текущего View.

Но такой подход исключает любую возможность подсказки типов, аргументов и т. д. и делает все излишне сложным. Поэтому разработчики ядра Joomla объявили этот метод устаревшим с этим PR 44162.

Новый способ выглядит так:

// Файл HtmlView компонента

    public function display($tpl = null)
    {
        $model = $this->getModel();
        $this->items = $model->getItems();

        parent::display($tpl);
    }

Старый подход (то есть метод get() во View) будет удалён в Joomla 7. Памятуя о релизном цикле Joomla, это означает, что:

  1. осенью 2025г выйдет Joomla 6.

  2. 2 года она будет основной веткой. Joomla 5 будет в режиме поддержки

  3. через 2 года, в 2027 выйдет Joomla 7, в которой будет удалён этот метод.

  4. но Joomla 6 будет ещё 2 года в режиме тех.поддержки и в ней (до 2029 года) этот метод останется.

Таким образом у разработчиков есть от 2,5 до 4,5 лет (на момент написания этого поста) на то, чтобы сделать этот рефакторинг.

Пруф [5.3] Deprecate AbstractView::get() #44162

Чат русскоязычного Joomla-сообщества

Теги:
Всего голосов 2: ↑1 и ↓1+1
Комментарии0

Дашборд — лицо системы: как сделать его удобным для команд из более 100 инженеров

Дашборд в версии 2.0
Дашборд в версии 2.0

Переосмысление дашборда стало одной из важных задач в процессе обновления интерфейса TMS TestY.

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

В Testy 2.0 можно выбрать, на каком языке будет работать система. Раньше интерфейс TMS был полностью англоязычным, теперь пользователям доступен русский язык — как часть плана поддержки локализации.

Добавили поиск по проектам и табличное представление, в котором доступно то же самое, что и на карточках: переходы, добавление в избранное, переключатели Only Favorites и Show Archive

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

Какие еще обновления появились в TMS с открытым исходным кодом, читайте в статье.

Теги:
Всего голосов 3: ↑3 и ↓0+4
Комментарии1

Если использовать в CI/CD (Jenkins, GitLab), воркеры с GraalVM (Вместо JRE) и Maven/Gradle, то можно ускорить сборку и тестирование Java приложений, примерно на 40%.

Я написал «фреймворк» специально для автоматизации создания базовых образов Docker под различные рантаймы.

https://github.com/avkcode/container-tools

Spring и Graal кстати отлично подходят друг для друга.

Теги:
Рейтинг0
Комментарии0

Совет по Joomla: показ уведомлений Joomla.renderMessages.

Пользователь совершает какие-то действия на сайте и получает сообщения об успешном или не успешном их результате, а также просто информационные сообщения. В php коде мы привыкли использовать для этого метод enqueueMessage():

use Joomla\CMS\Factory;

$html = 'Message';
Factory::getApplication()->enqueueMessage($html, 'warning');

Чаще всего в качестве сообщения используются языковые константы, чтобы пользователи могли получать сообщения на своём языке:

use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;

Factory::getApplication()->enqueueMessage(Text::_('SOME_LANG_CONSTANT'), 'info');

Рендер сообщений Joomla во фронтенде.

Здесь нам потребуется файл подключённые файлы ядра core.js и messages.js. Немного выдержки из кода:

/**
* Рендер сообщений, отправленных через  JSON
* Используется некоторыми javascript, в частности validate.js
*
* @param   {object}  messages JavaScript объект, содержащий сообщения для рендера.
* Пример:
*    const messages = {
*        "message": ["Это будет зелёное сообщение", "И это тоже"],
*        "error": ["Это будет красное сообщение", "И это тоже"],
*        "info": ["Это будет синее сообщение", "И это тоже"],
*        "notice": ["Какое-то информационное сообщение", "И это тоже"],
*        "warning": ["Оранжевое сообщение", "И это тоже"],
*        "my_custom_type": ["Такое же как инфо-сообщение", "И это тоже"]
*    };
* @param  {string} selector CSS-селектор контейнера для рендера сообщений
* @param  {bool}   keepOld  Удалить предыдущие сообщения? Да, если true
* @param  {int}    timeout  Таймаут исчезновения сообщения в миллисекундах
* @return  void  Метод ничего не возвращает
*/

Вот как это выглядит на практике:

Joomla.renderMessages({
    message: [Joomla.Text._('COM_SWJPROJECTS_USER_KEYS_KEY_SUCCESSFULLY_COPYED')]
});

Теперь мы видим, что в качестве сообщения мы и в Javascript можем использовать языковые константы. Для этого мы используем метод Joomla.Text._() (по аналогии с Text::_() в PHP). Но Javascript откуда-то должен получить значения этих языковых констант. И для этого в php коде нашей страницы мы должны позаботиться о нём и добавить нужные для js языковые константы с помощью метода Text::script().

use Joomla\CMS\Language\Text;

Text::script('SOME_LANG_CONSTANT_SUCCESS');
Text::script('SOME_LANG_CONSTANT_FAIL');

Таким образом я смогу получить в js доступ к значениям языковых констант SOME_LANG_CONSTANT_SUCCESS и SOME_LANG_CONSTANT_FAIL.

Источник

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Наш backend developer Дмитрий делится Open Source-проектом, который поможет разработчикам Telegram Mini Apps (TMA) упростить валидацию Init Data — проверку, что HTTP-запрос действительно был отправлен из приложения в Telegram.

Дмитрий реализовал Python-пакет, в котором имплементировал алгоритмы, позволяющие проверять подлинность данных, передаваемых из Mini Apps. С ним можно легко реализовать механизм авторизации/аутентификации для Backend-части приложения.

👉 Забирайте репозиторий: https://github.com/swimmwatch/telegram-webapp-auth

Также у проекта есть документация, в которой описывается применение этой библиотеки с популярными веб-фреймворками: Django, FastAPI.

Когда мы начинали разрабатывать TMA, то столкнулись с недостатком информации, кейсов, спросить или подсмотреть было не у кого – не так много компаний, которые занимаются созданием мини эппов. Сегодня же мы успешно реализовали несколько Telegram Mini Apps, накопили ценный опыт и готовы делиться своими Open Source-проектами с сообществом разработчиков и вкладываться в развитие технологии. Подписывайтесь на наш телеграм-канал!

Если у вас есть идея Telegram Mini App, то Doubletapp поможет ее воплотить, подробнее о наших кейсах – на сайте.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Событие Pizza, Bugs & Fun приближается - 22 февраля 2025 года

Уже несколько лет в мире Joomla проводятся мероприятия "Pizza, Bugs & Fun" (#PBF), где каждый может посвятить несколько часов своего мозгового времени тому, чтобы наша любимая CMS стала ближе к идеалу.

Видео из этого поста рассказывает об организационных вопросах, которые пригодятся для участия в PBF:

  • как создать аккаунт в Mattermost (чат международного Joomla-сообщества)

  • как создать аккаунт в Joomla! Documentation

  • как написать статью в Joomla! Documentation

  • как создать аккаунт на GitHub (у разработчиков обычно уже он есть)

  • как настроить патч тестер

  • как протестировать патч

  • как получить вознаграждение

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

Каждый помогает тем, что он умеет:

  • кто-то пишет недостающую документацию,

  • кто-то пишет код,

  • кто-то тестирует как исправлены ошибки или сделан новый функционал.

На сайте события есть карта, можно "захостить" свою локацию. Практически все движки в мире развиваются за счёт спонсирующих их компаний. Joomla одна из немногих, где развитие идёт только усилиями международного сообщества энтузиастов.

На момент написания данного поста в репозитории Joomla 752 открытых Issue (как правило это баги) и 223 Pull request (PR, исправление багов и новый функционал). Все PR обязательно тестируются минимум двумя участниками сообщества, дабы в конечный код движка не проскочила ошибка.

Если каждый из участников только нашего сообщества сделает даже одно тестирование, то, боюсь, PR и Issue на всех не хватит 😀

Смотреть видео

Сайт

Joomla по-русски: чат сообщества

Теги:
Рейтинг0
Комментарии0

Совет по Joomla: программный рендер модулей

Модули порой удобно использовать в местах, которые в Joomla не всегда предназначены для этого 😀. Например, в переопределениях макета. Из материала делаем посадочную страницу: часть инфы находится в самом материале, часть - в полях, а часть удобно вывести модулем. При этом модуль этот должен находиться между телом материала и данными из пользовательских полей.

Для реализации берём в руки ModuleHelper и приступаем.

<?php
use \Joomla\CMS\Helper\ModuleHelper;

$modules = ModuleHelper::getModules('landing-masonry');
if(!empty($modules))
{
    foreach ($modules as $module)
    {
        // рендерим всё, что нашли в позиции landing-masonry
        echo ModuleHelper::renderModule($module);
    }
}

А что если посложнее?

В этом случае всё просто. Но здесь в тему будет упомянуть ещё один способ работы с модулями. Контекст: магазин одежды. В карточке товара нужно вывести информацию о размерной сетке, типовые рекомендации по уходу и т.д. Это короткие тексты, которые повторяются из товара в товар и не нужно их копировать многажды. Эти тексты отображались простым аккордеоном Bootstrap.

Вид карточки товара JoomShopping. Все тексты, кроме описания товара - одинаковые во всех товарах. Описание товара уникальное для каждого товара.

Но! В этот же аккордеон нужно было добавить и описание товара JoomShopping. Поэтому я сделал с помощью своего модуля WT Quick links следующее.

  1. Создал модуль типа WT Quick Links, в котором в список элементов занёс все нужные тексты.

  2. Не стал назначать модуль какой-либо позиции. В шаблоне JoomShopping захардкодил id модуля. Хотя лучше было бы назначить модуль в некой уникальной позиции, которая встречалась бы только в нужном нам месте на сайте.

  3. Программным способом в данные модуля добавил нужные данные из JoomShopping так, как мне нужно (в начало списка - описание товара).

  4. Отрендерил модуль с помощью ModuleHelper в product_default.php шаблона JoomShopping.

<?php
use Joomla\CMS\Helper\ModuleHelper;
use Joomla\Registry\Registry;

// Модуль id 136 - Доставка, оплата и гарантии в карточку товара + ОПИСАНИЕ ТОВАРА JoomShopping
$module = ModuleHelper::getModuleById('136');

$module_params = new Registry($module->params);
// Формируем новые параметры модуля перед рендером. 
$new_module_params = [];
$i = 1;

// Помещаем описание товара в самое начало

if (!empty($this->product->description)){
    $new_module_params['fields']['fields0'] =  (object) [
        'item_header' => Text::_('JSHOP_DESCRIPTION'),
        'item_text'   => $this->product->description
    ];
}
// Переименовываем все остальные ключи массива элементов из модуля
foreach ($module_params->get('fields') as $key => $value)
{
    $new_module_params['fields']['fields' . $i] = $value;
    $i++;
}
$new_module_params = new Registry($new_module_params);
// Соединяем старые и новые параметры модуля.
$module_params->merge($new_module_params);

$module->params = $module_params->toString();

// Всё готово! Рендерим модуль.
echo ModuleHelper::renderModule($module);

Теги:
Всего голосов 3: ↑1 и ↓2+1
Комментарии0

Представлен открытый проект, который помогает создавать нейросети с нуля.

В Oumi вшиты все необходимые инструменты от препроцессинга данных и бенчмарков до различных видов обучения нейронок.

Решение содержит информацию как сделать ИИ‑спеца для различных задач, включая:

  • полную базу данных о популярных ИИ-моделях;

  • пошаговые инструкции для каждого этапа разработки своего ИИ;

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

  • дистилляция моделей для снижения их размеров и повышения эффективности;

  • метрики работоспособности ИИ и необходимые фреймворки для тестов;

  • данные для удаленной тренировки моделей — AWS, Azure, GCP, Lambda с подробной документацией к каждой платформе;

  • инструменты для фильтрации данных для нейросетей и их цензурирования;

  • примеры готовых конфигураций.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Joomla Web Services Collection For Postman

Разработчикам мобильных и WEB-приложений (и не только) весьма и весьма пригодится готовая коллекция для Postman. В коллекцию добавлены endpoint для REST API Joomla, с параметрами и примерами запросов.

Коллекция составлена трудами французского Joomla-разработчика Alexandre J-S William ELISÉ.

Смотреть коллекцию

Чат русскоязычного Joomla-сообщества

Теги:
Рейтинг0
Комментарии0

Я разверну этот мониторинг «с трех нот»: система для инсталляций с десятками СХД

Инженеры YADRO включили в состав продукта TATLIN.SATELLITES интегрированное решение для мониторинга — система получила название Monitoring Appliance. Она включает в себя компоненты для сбора и хранения метрик со множества массивов, а также их визуализацию и алертинг.

Возможности Monitoring Appliance

Система мониторинга, разворачиваемая из Docker Compose, может: 

  • Собрать метрики производительности компонентов СХД по протоколу SNMP.

  • Принять и обработать SNMP traps от СХД.

  • Принять и обработать Syslog-сообщения от СХД.

  • Мониторить состояние сервера, на котором установлен Monitoring Appliance.

  • Отображать данные мониторинга в виде дашбордов.

  • Оповещать о внештатных ситуациях и пороговых состояниях.

Главная страница визуализации мониторинг. На ней отображаются основные метрики «здоровья» систем хранения данных, на которых хочет сфокусироваться пользователь. Можно выбрать нужную СХД и получить данные конкретно по ней. Также этот дашборд легко пересобрать, исходя из своих целей. 

Дашборд на главной странице
Дашборд на главной странице

Из чего состоит мониторинг и как его повторить, читайте по ссылке →

Теги:
Всего голосов 1: ↑1 и ↓0+2
Комментарии0

Совет по Joomla: метод debug() для отладки лейаутов

В Joomla есть понятие layout. Это кусочек вёрстки, который можно многажды использовать в любом месте сайта: как в панели администратора, так и во фронтенде. Можно рассматривать лейауты как оторванные от контекста элементы дизайна. Находятся они в папке layouts в корне сайта. Также, в случае с модулями они могут находиться в папке tmpl модуля. А в случае с плагинами - в tmpl плагина.

Их можно переопределять в шаблонах, в чём и заключается одна из главных фишек Joomla. Лейауты чаще всего рендерятся с помощью классов LayoutHelper или напрямую FileLayout. Писал о них ранее тут и тут.

А вот как увидеть какой именно файл переопределения используется? Сколько их вообще есть и по каким путям идёт поиск макетов? Для этого есть метод debug() (и у LayoutHelper и у FileLayout).

<?php
/**
* Method to render a layout with debug info
*
* @param   string  $layoutFile   Dot separated путь к файлу относитеьлно basePath
* @param   mixed   $displayData  Объект с данными для рендера
* @param   string  $basePath     Base path, где будет поиск файлов лейаутов
* @param   mixed   $options      Дополнительные опции для FileLayout
*
* @return  string
*
* @since   3.5
*/
public static function debug($layoutFile, $displayData = null, $basePath = '', $options = null)
{
 // Так проще показать параметры метода.
}

То есть мы в можем проверить следующим образом:

<?php
/**
 * Получаем параметры баннера
 */
$wt_custom_menu_item_banner = $menu->getParams()->get('wt_custom_menu_item_banner');

echo \Joomla\CMS\Layout\LayoutHelper::debug(
        ($wt_custom_menu_item_banner?->pluginlayout ?? 'default'),
        ['wt_custom_menu_item_banner' => $wt_custom_menu_item_banner],
        JPATH_SITE.'/plugins/system/wt_custom_menu_item_banner/tmpl'
    );

И увидим результат как на скриншоте в начале поста.

Чат русскоязычного Joomla-сообщества.

Теги:
Всего голосов 1: ↑0 и ↓1-1
Комментарии2

E-mail шаблоны Joomla 5: добавление и просмотр своих переменных

В Joomla 5 появились настраиваемые email-шаблоны, как системные, так и сторонних компонентов. Их нельзя (пока что) добавить самостоятельно, они добавляются расширениями при установке. Но их можно отредактировать в Система - Шаблоны - Шаблоны писем. В настройках шаблонов писем (кнопка настроек компонента в верхнем правом углу) мы выбираем формат писем текст или HTML. Тогда становятся доступны настройки макетов шаблонов писем Joomla. Эти глобальные параметры можно переопределить в каждом конкретном email-шаблоне. Таким образом для каждого из email-шаблонов можно указать свою вёрстку и настройки логотипа.
Это, конечно, требует отдельной подробной статьи...

Для разработчиков: как добавить свои переменные для e-mail шаблонов Joomla?

Полезны окажутся 2 триггера для плагинов: onMailBeforeTagsRendering и onMailBeforeRendering.

onMailBeforeRendering - триггер, который позволяет добавлять свои шорт-коды для строковой замены в плагине. Отдать туда надо массив вида [ variable_name => variable_value ]. Из админки свои переменные нужно добавлять уже с фигурными скобками: {variable_name} заменится на variable_value. Аргументом $event плагина является экземпляр класса BeforeRenderingMailTemplateEvent, в котором есть кроме прочих 2 метода: getTemplate() (получение объекта мейлера, куда можно добавлять свои данные) и getTemplateId() (получение id шаблона письма вида com_users.registration.admin.new_notification), по которому мы определяем нужный ли это для нас email-шаблон или нет. Аналогично контексту в контент-плагинах.

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

// Получаем текущий мейлер 
$mailTemplate = $event->getTemplate();
$data = [
   'variable_name' => 'variable_value'
];
// с Joomla 4 для всех типов писем. 2-й аргумент - plain - текстовый формат письма 
$mailTemplate->addTemplateData($data, false);
// с Joomla 5.2 - для HTML-писем
$mailTemplate->addLayoutTemplateData($data);

// пример из ядра Joomla
// Add additional data to the layout template
$this->addLayoutTemplateData([
    'siteName' => $app->get('sitename'),
    'lang'     => substr($this->language, 0, 2),
]);

onMailBeforeTagsRendering - триггер, который добавляет ваши переменные в список доступных переменных для замены в окне редактирования email шаблона Joomla. Отдать туда нужно массив с переменными, но без их значений.

Чат Joomla-сообщества в Telegram

Мой личный Telegram-канал

Теги:
Рейтинг0
Комментарии0

Алгоритм ПИД-регулирования является одним из самых часто используемых методов управления по причине его простоты, надежности и хорошей устойчивости. Однако при реализации этого алгоритма часто забывают или умалчивают о проблемах, которые могут возникать:

  • Время дискретизации не всегда может оказаться фиксированным

  • проблемы с дискретным дифференцированием

  • проблемы с дискретным интегрированием

Попробуем посмотреть, как обстоят дела с решением этих проблем при реализации в доступных open source проектах на гитхабе.

Топ 16 проектов на гитхабе с заявленной реализацией PID алгоритма

Топ выбирался по запросу PID в поиске гитхаба с опцией "best match"

Из 16 проектов 4 являются откровенным мусором, студенческой липой, иначе трудно объяснить такое количество звезд и форков.

GyverPID добавлена по причине относительно широкой известности в аудитории отечественных ардуинщиков.

Буду благодарен, если в комментах укажут другие достойные реализации PID регулятора

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии2

Ближайшие события

В конце прошлого года Группа Arenadata выпустила обновления ряда своих продуктов.

Новые релизы:

  • Arenadata DB (ADB) — v6.27.1.59;

  • Arenadata DB Backup Manager (ADBM) — v2.3.2;

  • Arenadata DB Control (ADBC) — v4.11.0;

  • Arenadata Streaming (ADS) — v3.6.2.2.b1;

  • Arenadata Catalog (ADC) — v0.8.0;

  • Arenadata Cluster Manager (ADCM) — v2.5.0.

Обновления компонентов Arenadata Cluster Manager (ADCM):

  • Arenadata Monitoring (ADM) — v4.1.0;

  • Arenadata Enterprise Tools (ADET) — v2024121800.

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

⛓ Текст обзора и ссылки на полное описание релизов здесь.

Теги:
Всего голосов 5: ↑4 и ↓1+3
Комментарии2

Учим английский и одновременно тренируем слепую печать на тренажере. Представлен бесплатный сервис, который поможет увеличить кодерскую продуктивность в разы и сэкономит рабочие часы:

  • В приложение загружен только программистский словарь — отлично подтянете профессиональный язык.

  • Множество упражнений для развития скорости печати.

  • Вам не дадут перейти на следующий уровень, пока идеально не завершите предыдущий — шикарная тренировка усидчивости.

  • Можно отслеживать скорость и ритмичность печати.

Теги:
Рейтинг0
Комментарии2

Полезные советы от разработчика OpenSearch Даниила Дубровкина из AWS.

Вы смотрели The IT Crowd? Это уморительный британский телевизионный ситком примерно 2006 года, в котором группа ИТ‑гениев работала в отделе технической поддержки Reynholm Industries в Лондоне. Один из характерных смешных моментов заключается в том, что каждый раз, когда звонил телефон, Рой брал трубку и, не дожидаясь ответа, спрашивал: «Вы его выключили и снова включили?», а затем вешал трубку. Я часто чувствую себя Роем, когда общаюсь с пользователями, сообщающими об ошибках в проектах с открытым исходным кодом, которые я поддерживаю.

Вот мой структурированный подход к любым ошибкам (багам, проблемам), о которых сообщают в моих проектах с открытым исходным кодом:

  1. Не исправляйте ошибку. Поскольку это проект с открытым исходным кодом, и мы не продаём программное обеспечение, у сопровождающих может быть некоторая социальная ответственность, но они не обязаны что‑либо делать.

  2. Не пытайтесь воспроизвести ошибку. Не уверены, что это ошибка? Не можете воспроизвести проблему? Вежливо запросите дополнительную информацию или разъяснения.

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

  4. Не исправляйте ошибку. Теперь, когда человек, сообщивший об ошибке, написал для неё автоматизированный тест, он так близок к её исправлению. Попросите его сделать это. Это дает человеку, сообщившему об ошибке, чувство причастности и вклада в проект.

  5. Не делайте ничего другого. Не можете получить никакого участия в устранении ошибки от человека, сообщившего о ней? Оставьте ошибку открытой. Кто‑то другой её подхватит.

tl;dr Не исправляйте ошибку! У здорового проекта с открытым исходным кодом будет много вовлечённых участников, особенно когда дело касается ошибок. Это один из самых простых плодов, которые вы можете собрать как сопровождающий. Тем не менее, иногда я просто хочу исправить ошибку сам, потому что это так интересно.

Теги:
Всего голосов 1: ↑1 и ↓0+2
Комментарии0

ИИ и Open Source — гремучая смесь?

На The Register вышла статья о том, что Python-разработчики завалены баг-репортами, которые придумал ИИ: это стало известно при анализе опенсорс-кода, который часто переиспользуется в сотнях проектов. Это не первая претензия к ИИ. Значит ли это, что он не подходит для разработки? Или всё же существуют способы, которые могут облегчить жизнь программистам, несмотря на его недостатки?

Практически у всех систем искусственного интеллекта, независимо от архитектуры — нейросети или другой тип ИИ — наблюдаются «галлюцинации». Это неверные ответы, которые ИИ непонятно каким образом генерирует. Одно дело, когда можно быстро проверить совет сервиса, а другое — если в сложной программе приходится потратить время, чтобы понять, есть ли ошибка.

Ранее исследователь ИБ сообщал, что галлюцинации ИИ, используемого для генерации технической документации, позволили ему внедрить в описание название фейковой библиотеки для распознавания лиц. Её скачали 15 000 раз: будь она создана хакером, тот мог бы вложить в нее практически любую функциональность.

Кажется, что ИИ в разработке преследуют проблемы, причём связаны они с опенсорсом. Это не так. Во-первых, опенсорс — на виду, проблемы в нем проще. И ещё важнее, что галлюцинации — это не порождение ChatGPT. Ещё годы назад галлюцинации преследовали ИИ, например, стрекоза иногда распознавалась как ружьё — ну что в них похожего?! Зато сейчас мало кто возьмётся соревноваться с ИИ в скорости и точности распознавания, может, и в разработке эти недочёты удастся решить.

Теги:
Всего голосов 13: ↑13 и ↓0+20
Комментарии0

🎉 Релиз MoonShine v3 админ панели для Laravel! 🎉

Друзья, у нас праздник!

10 декабря наконец-то зарелизили MoonShine v3 (open-source панели администратора для проектов на Laravel).

Кто не вкурсе, вот статьи:

Первый взгляд на MoonShine

MoonShine 2.0. Что нового?

Это было непросто. Пришлось отложить дату релиза, но зато успел всё сделать что запланировано. 🔥

Что было на стриме:

  • 🕰 Краткая история создания MoonShine — от первых шагов до сегодняшнего дня.

  • 🚀 Релиз на GitHub, деплой новой версии лендинга и документации.

  • 🛍 Демонстрация маркетплейса приложений для MoonShine

Обязательно посмотрите запись стрима! Вы не только узнаете больше о MoonShine, но и вдохновитесь на свои проекты.

🎥 Ссылка на стрим

Немного выдохну, и сделаю подробный разбор по возможностям MoonShine v3.

Сайт проекта - https://moonshine-laravel.com/

Чат в телеграм - https://t.me/moonshine_ru

#MoonShine #релиз #CutCode

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии0

Исследовал интернет и наткнулся на GitHub Unwrapped. Он на основе активности в GitHub создаёт видео, где можно увидеть часто используемые языки, часы спонтанной работы, звёзды и всё остальное. Достаточно ввести только имя профиля, чтобы получить видео. Код открыт.

Сделано с использованием Remotion — тоже с открытым кодом, которая позволяет автоматизировать создание видео на React в веб. Документация хорошая, но надо разбираться. Увидел это и решил, что круто, надо поделиться!

P.S. Моя активность в этом ролике, если кому-то будет интересно.

Теги:
Всего голосов 4: ↑3 и ↓1+3
Комментарии0

🤒 Оптимизация электропотребления в Linux

Как известно, на линухе работа с питанием хуже, чем на Windows. Особенно это критично для людей с ноутбуком, желающих продлить время жизни от батареи.

Рассмотрим 3 инструмента:

  1. Один из самых популярных — TLP

TLP (The Linux Power Management). Мощный инструмент, много гибких настроек для процессора, дисков, сетевых интерфейсов и т.д. Хорошая документация. TLP работает в фоновом режиме, после настройки все будет работать само. Существует удобный TLPUI, чтобы не менять конфиги руками. Автоматически переходит в режим экономии при подключении зарядки.

+ Много гибких параметров

+ Автоматическое адаптивное управление

+ Разные типы устройств

- Возможно, надо будет доп настраивать для некоторых систем (на моем Lenovo Ideapad например пришлось читать вот это, благо дока хорошая)

- Необходимость обновления (сомнительно)

  1. Самый эффективный — auto-cpufreq

Автоматически управляет частотой процессора исходя из нагрузки и состояния батареи. Якобы сильно эффективнее и лучше TLP. Может работать вместе с ним, хотя и не рекомендуется.

+ Простота использования — достаточно запустить и забыть

+ Интеграция с другими инструментами

+ Постоянное обновление частоты процессора в зависимости от нагрузки

- Может потребовать доп настройки

- Требует админских прав для работы (сомнительно)

  1. От корпорации зла — Power Profiles Daemon (ppd)

Power Profiles Daemon — три режима работы (производительность, сбалансированный, экономия), между которыми можно переключаться. По умолчанию во всех DE именно он находится в виджете "батарея". Сделан Red Hat.

+ Интеграция с системой

+ Поддержка различных профилей питания

+ Легкость использования через графический интерфейс

— Менее гибок, чем перечисленные выше

Я по итогу выбрал auto-cpufreq и tlp (только потому, что ограничивает заряд батареи)
Если вам есть что сказать, с удовольствием пообщаемся в комментах :)

Теги:
Всего голосов 10: ↑10 и ↓0+12
Комментарии1