Задать вопрос
  • Как запустить сайт на yii2 локально?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    Есть официальная документация по yii2.

    Если вы устанавливали advanced версию, то не забудьте запустить init script в корне проекта в терминале.

    Ну и конфиги описанные Вами - это конфиги фрэймворка, а не докера. (ну, мало ли, вдруг Вы перепутали)
    Ответ написан
  • Не запускается Grub, как исправить?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    grub то стоит, раз он грузит систему.
    Просто, я думаю, надо ручками прописать в конфиге раздел с виндой, тогда будет и выбор ОС.

    Конфиг тут:
    /boot/grub/grub.cnf

    Но есть риск его сломать, делайте бэкапы.

    Либо переустановите grub на иной раздел с загрузочного диска.
    Ответ написан
  • По какой/каким книге Вы изучали язык программирования Си?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    689d0.jpg

    глушаков коваль "язык программирования с++"
    Небольшая, но емкая книга, старая, не модная, но хорошая, без воды.
    Ответ написан
  • Всё таки как же по человечески настроить ЧПУ на yii2?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    1. Нужно взять apache или nginx конфиг отсюда (в конце страницы).
    2. В конфиге веб приложения включить pretty urls, например, так:
    'components' => [
        // ...
        'urlManager' => [
            'class' => 'yii\web\UrlManager',
            // Hide index.php
            'showScriptName' => false,
            // Use pretty URLs
            'enablePrettyUrl' => true,
            'rules' => [
            ],
        ],
        // ...
    ],


    Внутри rules можно указывать правила (например, регулярные выражения, по которым должен срабатывать иной action, или, к примеру, может быть иной alias.

    Вот хорошая статья по теме, откуда и взят пример.
    Ответ написан
    Комментировать
  • Как заблокировать определенный сайт на openvpn (oc ubuntu server)?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    Можно в /etc/hosts вбить готовый список нехороших адресов (реклама, спам сайты, интернет казино, вирусная активность и т.п.).

    Также можно использовать иные днс сервера, например, от cloudflare или гугла, использовать dnscrypt-proxy.

    Накатить clam-av антивирус - почему бы и нет?
    ufw фаервол?

    Ну и в /etc/hosts можно добавить любые свои адреса, разумеется.
    Надеюсь, что Вы не играете в мини адок уровня роскомнадзора.
    Ответ написан
    1 комментарий
  • Как в iframe передать значение переменной?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    передать его через GET параметр?

    href: "/fitting/tryon.php?id=". arResult['ID'] ?
    Ответ написан
    2 комментария
  • Как разбить число пробелами?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    1. Взять число(строку), в массив (посимвольно)
    2. Вывести каждый элемент массива в цикле, в обратном порядке, где будет переменная-счетчик, растущая до трех, после выводим пробел и обнуляем счетчик.
    Ответ написан
    Комментировать
  • Как в Ubuntu сделать перемещаемый профиль?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    Ну можно попробовать так:
    1. При установке выносим /home в отдельный раздел.
    2. Копируем содержимое /home в какой-нибудь дропбокс
    3. Раздел отмонтировываем (umount)
    4. Монтируем другую папку какого-нибудь дропбокса в /home

    Вижу следующие возможные проблемы:
    1. Не безопасно
    2. Если версии ПО будут отличаться дома или на работе, то конфиг приложений может быть разный, поэтому что-то может отваливаться (при работе с ПО).

    Лучше просто завести какой-нибудь дропбокс для общих файлов, а не всего раздела или иметь live дистрибутив, запускать его с флэшки, где на флэшке и будет /home раздел (может работать медленно)
    Ответ написан
  • YII как сделать наследование CRUD операции от базового контроллера? Как использовать?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    Я что-то не понимаю, наверное, но ведь это классика - создать модель, где будут нужные методы, и использовать их в контроллере. Т.е. все CRUD операции держать в отдельном классе, которые будут в models, подключать этот класс в нужных контроллерах и использовать методы там (обращаясь к ним статически)

    Пример:

    в frontend/models создаете файл Crud.php:

    namespace frontend\models;
    
    Class Crud extends Model {
        public static function getData() {
            return ... // тут какие-нибудь вычисления или берем что-то из БД и т.п.
        }
    }


    После в любом контроллере подключаете эту модель:
    use frontend\models\Crud;

    И используете:
    $some_res = Crud::getData();
    Ответ написан
  • Как вы ведёте проекты по разработке сайта в Trello?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    В проекте, где я работал, было так:

    1. Колонка "sprint". В заголовке указывалась дата спринта, т.е. до такого-то числа. В этой колонке были задачи, распределенные по пользователям.
    2. Колонка "In progress" - туда несли задачи, если начали их делать
    3. Колонка "In review" - после выполнения задачи всё переносилось туда.
    4. Колонка "rework" - если в "in review" по каким-то причинам нужны исправления\доработка
    5. Колонка "closed" - туда отправляются закрытые задачи

    Приоритеты у задач определяются по тэгам разных цветов.
    Периодически trello очищается ("closed" колонка как-минимум)

    Я считаю, что trello не очень удобен в плане постановки задач.
    Ответ написан
    2 комментария
  • Yii Как в Rest API сделать аутентификацию из backend или frontend?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    Я не смотрел видео, но проверить залогинен ли пользователь можно так:
    if(!Yii::$app->user->isGuest) {
    ...
    }


    Если нужно узнать кто именно залогинен, то делается это так:
    if (Yii::$app->user->identity->id == 'username') {
    ...
    }


    Т.е. в контроллере можно проверить, залогинен ли пользователь и кто именно (есть ли у него права на API), если нет - проверять токен.
    Ответ написан
  • PHPStorm как залить файлы по фтп ранее созданного коммита?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    Вот перечень команд для отката до старого коммита, создания архива и выгрузки его по sftp (ssh) на сервер:

    1. берем id коммита (32 символа), копируем его git log
    2. git reset id
    3. tar -czf files.tgz /path/to/project
    4. scp files.tgz some@server.ru:~/
    Ответ написан
    Комментировать
  • Как исправить ошибку при установке git?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    Если не поможет ответ Web Dentist, то попробуйте выполнить данную команду:

    sudo apt-get install -f

    Данная команда автоматически пытается решить проблемы с зависимостями при предыдущих неудачах установки пакетов (программ).
    Ответ написан
    2 комментария
  • Как сделать прогресс-бар выполнения php скрипта, запускаемого через ajax?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    Комментировать
  • Как определить долгий авиамаршрут?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    Рискну предположить, я вижу это так:

    0. Берем данные в массив, сортируем массив по дате.
    1. Берем самую малую дату - аэропорт вылета (SVO), запоминаем в переменную
    2. Берем самую большую дату - аэропорт прелета. (DME), запоминаем в переменную
    3. Далее (понимаем, что оба аэропорта в Москве, и бомжуем 9 дней.) - т.е. break; (если мы берем под "долгий" - время, а не "время полетов") Если нет, то:
    4. Первый элемент массива = первый рейс в любом случае, берем аэропорт прилета.
    5. Перебор массива по порядку со второго элемента (key = 1, а не 0), проверяем все элементы на условие "если аэропорт вылета = последнему аэропорту прилета", если таких несколько, то рекурсия этой же функции (строим несколько маршрутов в этом случае) и так до конца, пока не выполнятся все рекурсии.
    6. после Берем все собранные маршруты, смотрим, если последний аэропорт не соответствует данным из пункта 2 (аэропорт прилета - DME) - то удаляем эти маршруты.
    7. Из оставшихся смотрим, какой из маршрутов имеет больше рейсов и\или чья дата последнего рейса больше (зависит от того, что мы берем под "долгий" - время полета или количество рейсов)

    Не претендую на самое оптимальное решение, наверное, если включить какую математику, то, возможно, можно сделать анализ быстрее\лучше\красивее.
    Ответ написан
    Комментировать
  • Как повесить событие на кнопку с каким-нибудь классом?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    Так?
    $('button.classname').click(function(e){
        e.preventdefault();
        window.location.href = 'http://another.url';
    });
    Ответ написан
    Комментировать
  • Как собрать массив?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    В вопросе много неизвестных, но если я понял хоть что-то верно, то примерно так:

    <?php
    
    class Hey {
    	
    	private $name;
    	private $lastname;
    	private $nickname;
    	private $email;
    
    	private function getArray($nickname, $password) { 
    
        	$loginaction = [
    	      'nickname' => $nickname, 
    	      'password' => $password, // где брать пароль, как параметры метода? Тогда я добавил туда же и nickname
    	    ];
    
    	    $sql = "SELECT * FROM `lk_user` WHERE nickname = :nickname AND password = :password LIMIT 1";
    	    $result = $this->db->row($sql, $loginaction); // какой формат переменной result?
    
    	    if ($result) {
    		    // какие данные из БД надо вернуть в массив?
    
    		    //если result - это объект, то присвоить значения можно так (это можно и пропустить, не ясна задача полностью):
    		    $this->name = $result->name;
    		    $this->lastname = $result->lastname;
    		    $this->nickname = $result->nickname;
    		    $this->email = $result->email;
    
    		    // вернуть надо именно массив? ОК:
    		    $res = [];
    		    $res['name'] = $this->name;
    		    $res['lastname'] = $this->lastname;
    		    $res['nickname'] = $this->nickname;
    		    $res['email'] = $this->email;
    
    		    return $res;
    		} else {
    			return false;
    		}
    
      	}
    
    }
    Ответ написан
    Комментировать
  • На какой CMS проще сделать сайт для организации конкурсов?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    Есть ли под это почти готовый функционал?

    Считаю, что нет.

    надо писать с нуля, используя какие-нибудь фреймворки, вроде yii2, symfony, laravel, codeigniter и т.п. (если речь о php).
    Ответ написан
    Комментировать
  • Как настроить mail server ubuntu?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    Ну это не самая простая задача, если честно.
    Конфиг всего этого довольно большой по объему и времени.

    Можно использовать некие связки, типа postfix + dovecot + spamasassin + clamav.
    И, как веб интерфейс, использовать webmail или openmailbox(хорошее решение) или squirrelmail или rainloop (этот наиболее красивый и удобный, даже protonmail.com работает на нем)

    Не хочу умничать в данном вопросе, потому как я в решении этой проблемы сталкивался с трудностями даже используя пошаговые инструкции с гугла. Поэтому поищите наиболее удобный для Вас набор связанных технологий, красивый веб интерфейс, опираясь на версию Вашей ОС.
    Ответ написан
    Комментировать
  • Кеды или Гном? (точнее для меня это разве что Ubuntu Budgie)?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    Используйте то, что удобно.
    Но если исходить из более "православного" набора, то, я думаю, gtk все же более мейнстрим и lightweight (так сложилось исторически, хотя последний гном быстрым назвать сложно, поэтому совсем уж красноглазые предпочтут какой-нибудь xfce)
    Ответ написан
    4 комментария