Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
AlexMaxTM

Алексей

  • 277
    вклад
  • 16
    вопросов
  • 280
    ответов
  • 54%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как войти по ssh на сервер без пароля, используя ключ?

    Rsa97
    Rsa97 @Rsa97
    Для правильного вопроса надо знать половину ответа
    # man ssh
    ...
         -i identity_file
                 Selects a file from which the identity (private key) for public key authenti‐
                 cation is read.  The default is ~/.ssh/id_dsa, ~/.ssh/id_ecdsa,
                 ~/.ssh/id_ed25519 and ~/.ssh/id_rsa.  Identity files may also be specified on
                 a per-host basis in the configuration file.  It is possible to have multiple
                 -i options (and multiple identities specified in configuration files).  If no
                 certificates have been explicitly specified by the CertificateFile directive,
                 ssh will also try to load certificate information from the filename obtained
                 by appending -cert.pub to identity filenames.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как войти по ssh на сервер без пароля, используя ключ?

    Melkij
    Melkij @Melkij
    PostgreSQL DBA
    man ssh
    ssh ... -i /path/to/private_key
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Какой php фреймворк можно понять / разобрать полностью?

    Maksclub
    Максим Федоров @Maksclub Куратор тега PHP
    maksfedorov.ru
    Прямо для вас, не пропустите...!

    PRS-7 фреймворк
    В серии видео полностью разбирается создание фреймворка,
    такого «универсала» по современым стандартам, последняя серия будет изо дня в день, все с тестами и плавно из одного решения в другое, смотреть на скорости 1.25


    Кишки фрейма:
    1. HTTP Response/Request PSR-7 (и компоненты для работы с ним)
    2. Построение контроллеров и роутинга (с переходом на Aura Router)
    3. Middlewear и Pipeline (а-ля Laravel, Slim, Symfony)
    4. DI контейнер (все фреймворки)
    5. Шаблонизаторы (+ пример на Twig из Symfony)
    6. ORM не точно
    Ответ написан более трёх лет назад
    8 комментариев
    8 комментариев
  • Как указать класс для конкретного td в GridView Yii2?

    Isolution666
    Игорь Васильев @Isolution666
    творческая личность
    Меня возможно сейчас возненавидят многие программисты, но мне надоело уже слышать о том что
    GridView - плохой и не гибкий. Ну во первых, он наследует от других виджетов, и если не полениться, то можно найти несколько, так вот, мой пример кода, не идеальный, исключительно, как один из видов решения, чтобы вы понимали, что из него можно выжать.
    Пишем функцию в модель News():
    ...
    <?php 
        public function sklonen($n,$s1,$s2,$s3, $b = false){
            $m = $n % 10; $j = $n % 100;
            if($b) {$n = '<b>'.$n.'</b>';}
            if($m==0 || $m>=5 || ($j>=10 && $j<=20)) {return $n.' '.$s3;}
            if($m>=2 && $m<=4) {return  $n.' '.$s2;}
            return $n.' '.$s1;
        }
    ...


    В контроллере:

    ...
        public function actionNews()
        {
            $searchModel = new NewsSearch();
            $dataProvider = $searchModel->search(Yii::$app->request->queryParams); // ищешь через LIKE
            return $this->render('news', [
                'searchModel' => $searchModel,
                'dataProvider' => $dataProvider,            
            ]);
        }
    ...


    В модели NewsSearch():

    ...
    $dataProvider = new ActiveDataProvider([
        'query' => News::find()->where(['visibility'=>1])->orderBy('date DESC'),
        'pagination' => [
            'pageSize' => 20, // говоришь системе мне нужно вывести 20 записей
        ],
    ]);
    ...


    Теперь во view:

    <?php
        use yii\helpers\Html;
        use yii\widgets\Pjax;
        use yii\grid\GridView;
        use budyaga_cust\users\models\News;
        $this->title = 'Новости';
        $this->params['breadcrumbs'][] = $this->title;
    ?>
    <?php Pjax::begin(); ?> 
    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        //'filterModel' => $searchModel,
        'showHeader' => false, // вырезаем шапку таблицы
        'tableOptions' => [
            'class' => 'table' // можно задать свой, тут 100% ширина блока
        ], 
        'options' => ['tag' => 'div', 'class' => 'col-lg-12'], // оборачиваем в div с Bootstrap CSS
        'emptyTextOptions' => ['tag' => 'p', 'class' => 'text-center text-danger'],
        'emptyText' => 'По вашему запросу ничего не найдено',
        'summary' => '<br/><p class="text-center text-muted">Всего найдено '.News::sklonen( '{totalCount}', 'новость', 'новости', 'новостей').'</p>', // 127
        'layout' => '{summary}{items}',  // настраиваем внешний вид как нам надо
            'columns' => [
                //['class' => 'yii\grid\SerialColumn'], // нумерация строк может вообще не пригодится
                [
                    // 'attribute' => 'img', // если много атрибутов в контенте можно это не писать
                    'format' => 'raw',
                    'label' => '',
                    'content'=>function($data){
                        return '
                                <div class="row">
                                    <div class="col-md-3">
                                        '.Html::a(Html::img('/img/box/'.$data->img,
                                                [
                                                    'class' => 'thumbnail', 
                                                    'alt' => $data->header, 
                                                    'style' => 'width:100%;'
                                                ])
                                        ,'/new/'.$data->link).'                                
                                    </div>
                                    <div class="col-md-9 products">
                                    '.Html::a($data->header, '/new/'.$data->link).'
                                    '.Html::tag('p', $data->text).'
                                    '.Html::a('подробнее', '#',['class' =>'buttons pull-right']).'
                                    </div>
                                </div>
                            ';
                    }
                ],
            ], // может понадобится по дизайну, чтобы пагинация была в другом месте
        ]); ?>
    <?= GridView::widget([
        'dataProvider' => $dataProvider,  
        'showHeader' => false,
        'showOnEmpty' => false,
        'summary' => 'страницы {page} из {pageCount}',
        'layout' => '<div class="page-nav td-pb-padding-side">{pager}<span class="pages">{summary}</span></div>', // формируем внешний вид пагинации
        'pager' => [
            'maxButtonCount' => 5, // максимум 5 кнопок
            'options' => ['id' => 'mypager', 'class' => 'pagination'], // прикручиваем свой id чтобы создать собственный дизайн не касаясь основного.
            'nextPageLabel' => '<i class="ionicons ion-arrow-right-c"></i>', // стрелочка в право
            'prevPageLabel' => '<i class="ionicons ion-arrow-left-c"></i>', // стрелочка влево
        ],  
    ]); ?> 
    <?php Pjax::end(); ?>

    ВСЁ ! Здесь показан рабочий код, настраивайте по вашему вкусу, возможно будет критика, но! Этот код имеет адаптивную вёрстку! То есть вы можете сделать из этого поиск по товарам и услугам, да по любому контенту, и он будет гибким для всех устройств, плюс ajax сделает это невероятно быстро и легко, словно вы нажимаете на табы. Наследованные виджеты я брал из коробки, ничего не выдумывал, материал собрал из документации.

    --
    Это был полный разбор виджета GridView
    Всем спасибо за внимание. Пока! )))
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как чайнику настроить Git?

    Юра Комаров @Yurajun
    Пройди 50 пошаговых уроков, станет все понятнее
    https://githowto.com/ru
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Что вы думаете о бирже фриланса guru.com?

    vicodin
    Anton Filippov @vicodin
    Имею некоторый опыт
    Делал обзор на неё тут: flppv.ru/all/freelance-services
    Ответ написан более трёх лет назад
    5 комментариев
    5 комментариев
  • Как правильно наследовать модуль dektrium/yii2-user?

    proudmore
    Артем @proudmore
    Вам в принципе не нужно наследовать модуль. Вы можете в controllerMap изменять контроллеры, используемые в модуле.
    'user' => [
                'controllerMap' => [
                    'recovery' => [
                        'class' => 'dektrium\user\controllers\RecoveryController',
                        'layout' => '@backend/views/layouts/main-login'
                    ],
                    'security' => [
                        'class' => 'dektrium\user\controllers\SecurityController',
                        'layout' => '@backend/views/layouts/main-login'
                    ]
                ],
                'modelMap' => [
                    'LoginForm' => 'backend\models\LoginForm',
                ],
            ]
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Почему слетает сессия Yii2?

    slo_nik
    Дмитрий @slo_nik Куратор тега Yii
    Добрый вечер.
    Это происходит потому, что Вы, я думаю, не читали документацию.
    Вы в каждом действии объявляете новую сессию.
    // Action 1
    $session = Yii::$app->session;
    if($session->isActive){
       $session->set('TEST', 123);
    }
    // Action 2
    $session = Yii::$app->session;
    echo $session->get('TEST');
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как настроить транспорт почты через обычную php mail?

    slo_nik
    Дмитрий @slo_nik Куратор тега Yii
    Добрый день.
    Проверьте директорию runtime/mail, туда должны письма падать.
    Ещё проверьте параметр $useFileTransport
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • Yii2 как добавить компонент в модуль и как к нему обратиться?

    qonand
    Максим Федоров @qonand
    Software Engineer
    в конфиге не backend\modules\pay\components а backend\modules\pay\components\Cash нужно указывать
    Ответ написан более трёх лет назад
    7 комментариев
    7 комментариев
  • Как сделать один обработчик для всех менюшек?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    Добавляем делегированный обработчик клика, где делаем следующие проверки:

    1. Если клик был за пределами какого-либо выпадающего меню - закрываем их все
    2. Если клик был по кнопке открытия - открываем соответствующее ей меню

    const cardSelector = '.post';
    const buttonSelector = '.post > img';
    const menuSelector = '.post-info';
    
    document.addEventListener('click', function(e) {
      if (!e.target.closest(menuSelector)) {
        document.querySelectorAll(menuSelector).forEach(n => n.classList.remove('active'));
      }
    
      if (e.target.matches(buttonSelector)) {
        e.target.closest(cardSelector).querySelector(menuSelector).classList.add('active');
      }
    });
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как правильнее делать правила для модели на совпадение с данными из бд?

    qonand
    Максим Федоров @qonand
    Software Engineer
    лучше использовать exist-валидатор, он специально реализован для поиска данных в бд? например:
    ['position_id', 'exist', 'targetClass' => Positions::className(), 'targetAttribute' => 'id']
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Как работает экономика облачного майнинга?

    Nipheris
    Станислав Макаров @Nipheris
    Уже ясно что крипта будет интегрироваться в реальную экономику и сейчас ее надо майнить и складывать

    Вы не понимаете, что можете (!) ошибаться именно здесь. А вот продавцы/арендодатели майнинг-оборудования ещё весной/летом заработали очень неплохо, они уже не ошибутся. Стандартное "лучше синица в руках чем эфир в небе".
    Ответ написан более трёх лет назад
    10 комментариев
    10 комментариев
  • Где можно найти подобный слайдер или как его сделать?

    lemme @lemme
    Frontend
    idangero.us/swiper/demos/170-slides-per-column.html
    idangero.us
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Что делает эта конструкция в jquery?

    rockon404
    Антон Спирин @rockon404
    Frontend Developer
    Такой вариант записи используют в JS, когда надо получить ключ или вызвать функцию с помощью переменной.
    Это возможность самого языка, а не конструкция jquery.
    var foo = {
      bar: 'bar value',
    };
    
    console.log(foo.bar);
    // => bar value
    
    console['log'](foo['bar']);
    // => bar value


    Разберем ваш пример. Такая запись:
    var action = 'addClass';
    
    $('.some-selector')[action]('some-class');

    равносильна такой:
    $('.some-selector').addClass('some-class');

    То же самое для объекта:
    var key = 'name';
    
    var obj = {
      name: 'Tom',
      age: 24,
    };
    
    console.log(obj[key]);
    // => Tom
    
    console.log(obj.name);
    // => Tom
    
    console.log(obj[key] === obj.name);
    // => true
    
    key = 'age';
    
    console.log(obj[key]);
    // => 24


    Так же есть случаи, когда к ключу можно обратиться только таким способом:
    var obj = {
      'three words key': 'value',
    };
    
    console.log(obj['three words key']);
    
    // => value
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Нужна ли защита от CSRF в API?

    Boris Köln @BorisKorobkov
    Web developer
    Нет.
    CSRF, как следует из названия Сross Site Request Forgery, нужен только для проверки доступа с сайта (из браузера) и защиты от ботов.
    API, как следует из названия Application Programming Interface, наоборот, предназначен для ботов.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Почему не работает фильтр по полю в GridView?

    qonand
    Максим Федоров @qonand
    Software Engineer
    Не ищет потому что Вы после создания поиск и не вызываете
    $dataProvider = $searchModel->search(Yii::$app->request->get());

    Да и датапровайдер формировать не нужно в контроллере, он формируется в поисковой модели.
    А вообще саму поисковую модель не мешало бы прикрепить к вопросу.
    Ответ написан более трёх лет назад
    5 комментариев
    5 комментариев
  • Как выравнить числовые значения в таблице по разделителю?

    space2pacman
    Ярослав Иванов @space2pacman
    Просто царь.
    https://jsfiddle.net/space2pacman/fjLpwbap/
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • Как выравнить числовые значения в таблице по разделителю?

    0xD34F
    0xD34F @0xD34F
    Вижу два варианта:

    1. Разделить колонку на три - в первой отображать целую часть, во второй разделитель, в третьей дробную часть. Первая колонка выравнивается по правой стороне, третья по левой.

    2. Задать моноширинный шрифт и добавить пробелов слева.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как выравнить числовые значения в таблице по разделителю?

    Exploding
    Exploding @Exploding
    wtf?
    В одну колонку без пробелов))
    5a31e1c12605e386339091.jpeg
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
Оценили как «Нравится»
  • 1
  • 2
  • Следующие →
Самые активные сегодня
  • sasmoney
    sasmoney
    • 9 ответов
    • 0 вопросов
  • vabka
    Василий Банников
    • 6 ответов
    • 0 вопросов
  • Drno
    • 5 ответов
    • 0 вопросов
  • GNUBack
    • 5 ответов
    • 0 вопросов
  • Sanes
    Sanes
    • 4 ответа
    • 0 вопросов
  • Vindicar
    Vindicar
    • 4 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации