Задать вопрос
  • Как в windows 11 посмотреть какой процесс грузит видеокарту?

    @lolpraym
    Привет! такая же ситуация сейчас была, надо нажать правой кнопкой мыши на Имя, и потом поставить галочку в GPU.
    Ответ написан
    2 комментария
  • Macbook air M4 24/32GB 512/1TB или Macbook Pro M4 24GB 512/1TB?

    pewpew
    @pewpew
    У меня бук M4 Pro 13" на проце M4 (не про), 16/512, до этого был M3 Pro 13" на проце M3 (тоже не про) 16/1Tb, а до этого был M2 Pro на проце M2 (всё так же не про) (в старой будке) 8/256.
    Занимаюсь веб разработкой, в основном бэк + всякие пет проекты, немного геймдев, немного поигрываю в игры.
    И вот что я скажу.
    Прыжок с M2 на M3 был оправдан. Тем более что я по неопытности повёлся на маркетинг и взял бук с мерзким тачбаром. Для нас, программистов это как отрубить пару пальцев. Все F-кнопки сразу перестают быть удобными и тактильно не ощущаются. Что касается производительности, то она сильно не проседала. Но оперативы всё же не хватало. Перейдя на M3 Pro я вздохнул свободно. 1Tb прям норм. Ну и 16 гигов памяти - база. Так получилось, что была возможность перескочить на M4, но немного потерять в SSD. И да, 512 гигов уже едва хватает. Приходится пользоваться внешним накопителем.
    По поводу производительности - не заметил что прямо сильно что-то поменялось. Но разве что игры стали идти лучше. А кулер включается только в Baldur's Gate. В остальное вермя я его не слышу. Появился +1 USB порт. Это удобно, но не критично.
    Дома приобрёл себе ещё макмини на M4 Pro 24/512. И он прям тащит. Не знаю, пока не было задач, где бы он проседал. Зверь машина.

    Резюмируя - можно и air брать, главное по оперативной памяти не меньше 16, а лучше 24. Не сейчас, так потом понадобится. И да, докеры те же жрут её хорошо. Не упрёшься, но лучше больше. SSD от 512, но как варик - внешний накопитель спасёт. Вот у меня на 2 Тб и я уже привык. А про экрану и разъёмам - тут уже начинаются хотелки. Экран и у эйра хорош. У меня проха, но я не вижу прям чего-то очень особенного в экране. Маки не делают плохого. Что там ещё - звук у прошки типа чуть лучше, но ты же в наушниках будешь большую часть времени, бери кстати айрподсы прохи, очень прям зашли. По экранам - ну будешь иногда подрубать, но нафига тебе больше одного внешнего моника? Если возникает такой кейс, подумай лучше о макмини для рабочего стола.
    Ответ написан
  • Как создать docker-контейнер в проекте на Yii2, в котором бы работал cron?

    karabanov
    @karabanov Куратор тега Docker
    Системный администратор
    Почитать "Запуск cron внутри Docker-контейнера" и разочароваться.

    Почитать про "supercronic" воодушевиться и добавить supercronic в образ с backend, затем из образа backend запустить контейнер, собственно, с backend и из этого же образа запустить supercronic в соседнем контейнере, в котором и будет выполняться целевая команда по расписанию заданному в crontab
    Ответ написан
    1 комментарий
  • Как создать docker-контейнер в проекте на Yii2, в котором бы работал cron?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Как вариант настроить кронтаб в хостовой системе, который в контейнере докера будет дергать команду.
    Что-то вроде:

    docker exec -i <backend docker container> bash -c "php yii cron/midnight"
    Ответ написан
    5 комментариев
  • Как обойти ограничение максимального размера поля в 255 символов?

    @Nolan81
    программист
    Нужно писать новую миграцию, в которой через ALTER TABLE сменить определение поля. И запустить ее.
    Ответ написан
    2 комментария
  • Как в ubuntu смотреть, какой пользователь что делал?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    zver - наш воображаемый пользователь-зверь.

    1. Какой пользователь в какое время заходил?

    - last - история входов.
    - last zver - история входов зверя.
    - lastb zver - история неудачных входов зверя.
    - last zver | grep "Jan 21" - история входов зверя за 21 января сего года.
    - last -s -7days zver - история входов зверя за последние 7 дней.
    - last -s 2025-01-15 -t 2025-01-21 zver - история входов зверя за 15-21 января 2025 года.

    2. Действия того или иного пользователя?

    - cat /home/zver/.bash_history - история команд зверя.
    - who -u - показывает активных пользователей (терминалы и время входа).
    - ps -u zver - показывает список активных процессов зверя.
    - sudo iotop -u zver - мониторинг ввода вывода пользователя зверя (в режиме реального времени).
    - sudo iftop -f "src user zver" - показывает сетевой трафик зверя.
    - sudo tail -f /var/log/syslog | grep zver - просмотр действий зверя в реальном времени.
    - sudo journalctl -f | grep zver - отслеживание действий зверя в реальном времени (если используется systemd).
    - sudo lsof -u zver - какие файлы открыты у зверя.
    - find /home/zver -type f -mmin -60 - какие файлы изменил зверь за последний час.
    - stat /home/zver/nomera-devchonok.txt - показывает подробности что делал зверь с файлом стратегического назначения.

    3. Если пользователь пользовался sudo -i, sudo -s, sudo su, как посмотреть, что он делал под этими оболочками?

    - sudo grep zver /var/log/auth.log - история команд (втч. под sudo) зверя.
    - sudo zgrep zver /var/log/auth.log* - просмотр истории команд зверя из текущих и архивных логгов.
    - sudo aureport -x --summary - показывает сводку команд (втч. под sudo).

    Расширенный мониторинг зверей - auditd и еще.
    Ответ написан
    2 комментария
  • Актуален ли yii2 в 2025?

    viplike
    @viplike
    Yii2 | PHP8 + Flutter | Dart + API разработчик
    По популярности на гитхабе конечно он не самый топ, но по производительности, скорости разработки, гибкости спокойно даёт прикурить, если я его правильно использовать. До сих пор пилю проекты чисто на нём, очень удобно работать. Да монолит, да встроенный jquery, да там ещё какие-то минусы, но в целом отличный инструмент, ещё ни разу не подвёл, огромный респект команде, которая его поддерживает.
    Ответ написан
    1 комментарий
  • Актуален ли yii2 в 2025?

    SamDark
    @SamDark
    Yii2 core team
    Актуален. Поддерживается. Нужно искать разработчика не на фреймворке, а просто нормального разработчика. Разобраться с фреймворком нормальный разработчик сможет довольно быстро.

    Сейчас в общем не очень хорошо с рынком труда, сам фреймворк тут не особо влияет.
    Ответ написан
    4 комментария
  • Как внутри yii2 сделать запрос на centrifugo?

    @rusline18 Автор вопроса
    Нашел решение. Во первых я в docker-compose объединил network все контейнеры, что у них была одна сеть и я мог обращаться к соседней сети

    Дальше я вместо url localhost:8000/api поменял на название контейнера и получился адрес centrifugo:8000/api. И все теперь заработало
    Ответ написан
    Комментировать
  • PHP: Как сделать ссылку вместо community.php?name=...&author=... на community/name/author?

    shambler81
    @shambler81 Куратор тега htaccess
    GET не является частью урла в mod_rewrite в RewriteRule он физически не может попасть
    Ваш вариант RewriteCond %{QUERY_STRING}
    Вот тебе генератор

    https://donatstudios.com/RewriteRule_Generator
    Ответ написан
    Комментировать
  • Как добавить задачу cron на ubuntu при помощи скрипта?

    @Drno
    (crontab -l 2>/dev/null; echo "@reboot first-run-script.sh") | crontab -

    spoiler

    Файл crontab, который открывается командой `crontab -e` для пользователя root, находится в директории:

    /var/spool/cron/crontabs/root

    Ответ написан
    4 комментария
  • Как установить обновление Jetbrains?

    во всех настройках ide по пути appearance & behavior -> system settings -> http proxy можно включить опцию auto-detect proxy settings. и все vpn да прокси будут работать на отлично. если конечно vpn/proxy не в снг...
    Ответ написан
    1 комментарий
  • Как правильно составить правило для url?

    slo_nik
    @slo_nik Куратор тега Yii
    'default/<id:\d+>/brand-<brand:\d+>' => 'default/index',
    'default/<id:\d+>' => 'default/index',
    'default' => 'default/index',
    
    echo Html::a('test', ['default/index', 'id' => $id, 'brand' =>  $brand])
    echo Html::a('test', ['default/index', 'id' => $id])
    echo Html::a('test', ['default/index'])
    
    http://site.loc/default/index/3/brand-2
    http://site.loc/default/index/3
    http://site.loc/default/
    Ответ написан
    Комментировать
  • Как настроить yii2 advanced на ubuntu?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый вечер.
    RootDirectory настраиваете на корень сайта, не на backend/web и не на frontend/web
    В корне сайта .htaccess
    RewriteEngine On
    
    RewriteRule ^(frontend|backend)/web/ - [L]
    
    RewriteCond %{REQUEST_URI} ^/(admin)
    RewriteRule ^admin(\/?.*)$ backend/web/$1 [L]
     
    RewriteCond %{REQUEST_URI} ^/
    RewriteRule ^(\/?.*)$ frontend/web/$1 [L]

    В backend/web .htaccess
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php

    В backend/config/main.php, в секцию request
    'baseUrl' => '/admin'

    Перейдя по адресу http://site.com попадёте на frontend, а по адресу http://site.com/admin - в админку.
    Теперь, если захотите перенести сайт в поддиректорию, например subsite, адрес изменится на http://site.com/subsite.
    Вносите изменения в .htaccess, который в корне сайта.
    RewriteEngine On
    
    RewriteRule ^(frontend|backend)/web/ - [L]
    
    RewriteCond %{REQUEST_URI} ^/(subsite/admin)
    RewriteRule ^admin(/.*)?$ backend/web/$1 [L]
    
    RewriteCond %{REQUEST_URI} ^/(subsite)
    RewriteRule ^(.*)$ frontend/web/$1 [L]

    В backend/config/main.php добавляете переменную $baseUrl
    $baseUrl = str_replace('/backend/web', '', (new yii\web\Request)->getBaseUrl());

    и подставляете в значение baseUrl
    'baseUrl' => $baseUrl . '/admin'
    В этом случае Вы не заморачиваетсь с названием поддиректории в которую перенесёте сайт, названия можете менять как угодно, но не забываете сменить название и в корневом .htaccess
    Ответ написан
    Комментировать
  • Как передать объект из контроллера в head?

    slo_nik
    @slo_nik Куратор тега Yii
    Доброе утро.
    В контроллере создаёте свойство, присваиваете ему нужное значение.
    class DefaultController extends Controller
    {
        public $test;
    
        public function actionIndex()
        {
             $this->test = 'test';
             /* остальной код метода */
        }
    }

    В main.php вызываете приблизительно так
    <?= Yii::$app->controller->view->context->test ?>
    Ответ написан
    6 комментариев
  • Как загрузить изображение на сервер через AJAX?

    slo_nik
    @slo_nik
    Добрый день.
    $(function() {
            $('#form-data').on('submit', function(e){
                e.preventDefault()
                var form = $(this); // Предположу, что этот код выполняется в обработчике события 'submit' формы
                var data = new FormData();  // Для отправки файлов понадобится объект FormData. Подробнее про него можно прочитать в документации - https://developer.mozilla.org/en-US/docs/Web/API/FormData
    
    
    
                // Сбор данных из обычных полей
                form.find(':input[name]').not('[type="file"]').each(function() { 
                    var field = $(this);
                    data.append(field.attr('name'), field.val());
                });
    
    
    
                // Сбор данных о файле (будет немного отличаться для нескольких файлов)
                var filesField = form.find('input[type="file"]');
                var fileName = filesField.attr('name');
                var file = filesField.prop('files')[0];
                data.append(fileName, file) ;
    
    
    
                // Отправка данных
                var url = 'upload.php';
    
                $.ajax({
                    url: url,
                    type: 'POST',
                    data: data,
                    contentType: false,
                    cache: false, 
                    processData:false, 
                    success: function(response) {
                        console.log(response)
                    }           
                });  
            })          
        });

    <form id="form-data" action='#'>
        <input type="file" name="test" multiple>
        <input type="submit" name='submit' value="Send">
    </form>
    Ответ написан
    2 комментария
  • Как отобразить часть контента используя Pjax yii2?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый день.
    У Вас есть выпадающий список
    <select name="spjax" id="spjax">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
    </select>

    Где-то в другом месте страницы есть блок, который надо обновить. При обновлении к заголовку необходимо добавить значение переменной $Ipjax. Оборачиваем этот блок Pjax и добавляем пользовательский js.
    <?php
       Pjax::begin([
           'id' => 'view-mode-pjax'
       ])
    ?>
    <div class="col-lg-4">
        <h2>Heading <?= $Ipjax ?></h2>
    
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et
            dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
            ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
            fugiat nulla pariatur.</p>
    
        <p><a class="btn btn-default" href="http://www.yiiframework.com/doc/">Yii Documentation &raquo;</a></p>
    </div>
    <?php
      Pjax::end();
    $this->registerJs("
    $(function(){
      $('#spjax').on('change', function(){
        var Id = $(this).val()
        console.log(Id)
        $.pjax.reload({
            container: \"#view-mode-pjax\", // контейнер, в котором надо обновить данные.
            url: window.location.href,
            timeout: 0,
            data: {
               'id': Id // данные, которые отправляются на сервер.
            },
        });
      })  
    })    
    ", View::POS_END)
    ?>

    А в контроллере, в действии, которое подключает данный вид передаёте нужную переменную.
    public function actionIndex()
    {
        $Ipjax = Yii::$app->request->get('id') ?: null;
        return $this->render('index', ['Ipjax' => $Ipjax]);
    }

    Отлавливаете изменение выпадающего списка и запускаете pjax. Идёт запрос на сервер, проверяется переменная и возвращается всё тот же вид, но уже с переменной.
    И Pjax, ушлый зверёк, обновит не всю страницу, а только тот блок, который Вы укажите.

    p.s. Пример сделан на yii2-basic, в файле views/index и в DefaultController.
    Ответ написан
  • Как работать с Pjax в yii2?

    slo_nik
    @slo_nik Куратор тега Yii
    Доброе утро.
    Pjax имеет дело только с тем содержимым, которое располагается между begin() и end().
    Поэтому можно просто добавить нужный div после формы.
    Код формы.
    <?php
       yii\widgets\Pjax::begin(['id' => 'new_note', 'enablePushState' => false]) ?>
            <?= Html::beginForm(['/system/system/fastsearch'], 'post', ['data-pjax' => '1','enctype' => 'multipart/form-data', 'class'=>'form-inline' ]) ?>
            <?= Html::input('text', 'search', "", ['class' => "form-control form-control-sm ml-3 w-75"]) ?>
            <?= Html::submitButton('<i class="glyphicon glyphicon-search"></i>&nbsp;Найти', ['class' => 'btn btn-default', 'id'=>'press_search'])?>
            <?= Html::endForm() ?>
            <div id="reload-pjax"><?= $search ?? null ?></div>
        <?php Pjax::end();
    ?>

    Действие в контролере может быть таким.
    public function actionFastsearch()
    {
        if(Yii::$app->request->isAjax){
            $search = Yii::$app->request->post('search');
            return $this->render('index', ['search' => $search]);
        }
    }

    Или, что по моему мнению лучше, оправлять форму и обрабатывать ответ сервера используя обычный js или jquery.

    P.S.
    Хотя можно использовать и такой вариант. Поле формы должно быть заполнено обязательно.
    <?php
    Pjax::widget([
        'id' => 'reload-pjax',
        'enablePushState' => false, 
        'enableReplaceState' => false, 
        'formSelector' => '#options-form',
        'submitEvent' => 'submit',])
    ?>
    <?= Html::beginForm(['/site/fastsearch'],
                        'post',
                        [
                            'class'=>'form-inline',
                            'id' => 'options-form'
                        ]) ?>
    <?= Html::input('text', 'search', "", ['class' => "form-control form-control-sm ml-3 w-75"]) ?>
    <?= Html::submitButton('<i class="glyphicon glyphicon-search"></i>&nbsp;Найти', ['class' => 'btn btn-default', 'id'=>'press_search'])?>
    <?= Html::endForm() ?>
    <div id="reload-pjax"></div>
    Ответ написан
    2 комментария
  • Как ускорить UPDATE MySQL?

    petermzg
    @petermzg
    Самый лучший программист
    Блокировка "for update" работает только внутри транзакции.
    И не работает с autocommit.
    Делайте явный START TRANSACTION
    Ответ написан
    Комментировать
  • Как делать максимально безотказные бэкапы корня сайта и mysql в динамике?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега MySQL
    Делают read-only реплику и бэкапят её обычным способом.
    Ответ написан
    Комментировать