Задать вопрос
  • Как получить доступ к переменной PHP?

    @Vitsliputsli
    Ваша переменная по-факту объявлена внутри функции load_tpl, соответственно извне (даже в другом вызове той же функции) видна не будет.
    Ответ написан
    Комментировать
  • Как работать с @media запросом?

    Vlad_IT
    @Vlad_IT Куратор тега CSS
    Front-end разработчик
    Отформатируйте, и посмотрите почему
    body {
        background: #f0f0f0;
    }
    
    @media screen and (max-width: 600px) {
        body {
            background: #fc0;
        }
    }
    
    .container {
        width: 600px;
    }
    
    .container {
        width: 1200px;
        margin-left: auto;
        margin-right: auto;
    
    }

    UPD: а, еще также, при одинаковом селекторе у двух стилей (в данном случае у обычного и в media), приоритетом будет тот, что ниже в css файле. Поэтому поместите ваш media запрос ниже.
    Ответ написан
    Комментировать
  • На что лучше подцепить html страничку, если это сайт визитка с одним разделом блога?

    alsolovyev
    @alsolovyev
    ¯\_(ツ)_/¯ Enjoy life, Eat well & Laugh often
    Для подобных целей народ давно придумал Jekyll - генератор статических сайтов(или ему подобные движки: Hugo и etc). Создаете шаблон для новостей(статей), добавляете массив данных, а движок генерирует папку со статическими html страницами для каждой новости(сортировку по дате или параметру, который вы укажите).

    В итогу мы избавляемся от cms, базы данных и других ненужных тяжелых элементов. Сервер отдает только статические html страницы.
    Ответ написан
    Комментировать
  • Как запустить скрипт на сервере?

    fzfx
    @fzfx
    18,5 дм
    вариантов много:
    - запускать в screen;
    - запускать в tmux;
    - запускать через nohup и смотреть вывод в создаваемом им файле;
    - запускать через systemd;
    - ...
    Ответ написан
    1 комментарий
  • Как скомпилировать проект на c# в dotnet?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    # клонируем рекурсивно, т.к. там ссылка на другой репозиторий
    git clone --recursive https://github.com/yar229/WebDavMailRuCloud.git
    # тянем последнюю версию nuget, если таковой еще нет
    wget https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -O nuget.exe --no-check-certificate
    # восстанавливаем пакеты nuget
    mono nuget.exe restore WebDavMailRuCloud/WebDAVMailRuCloud.sln
    # пробуем выполнить сборку решения
    MONO_IOMAP=case xbuild WebDavMailRuCloud/WebDAVMailRuCloud.sln

    Если получаем ошибку:

    MailRuCloudApi.cs(1020,51): error CS0019: Operator `>' cannot be applied to operands of type `long' and `object'

    Вот эта строчка:
    https://github.com/yar229/Mail.Ru-.net-cloud-clien...

    Открываем локальную копию указанного файла и добавляем скобки (кстати, можно сделать pull request):

    return (fileStream.Length > 0) as object;

    Пробуем собрать еще раз:

    MONO_IOMAP=case xbuild WebDavMailRuCloud/WebDAVMailRuCloud.sln

    В случае успеха получаем что-то типа этого:

    18 Warning(s)
    0 Error(s)

    Пробуем запустить:

    mono WebDavMailRuCloud/WDMRC.Console/bin/Debug/wdmrc.exe --help

    Получаем:

    log4net:ERROR Could not create Appender [ColoredConsoleAppender] of type [log4net.Appender.ColoredConsoleAppender]. Reported error follows.
    System.EntryPointNotFoundException: GetConsoleOutputCP
    ...

    В суть не буду вникать, но очевидно, что какая-то проблема с log4net. Можно просто отключить log4net. Откройте файл конфигурации:

    nano WebDavMailRuCloud/WDMRC.Console/bin/Debug/wdmrc.exe.config

    Замените ветку <log4net>...</log4net> на:

    <log4net threshold="OFF" />

    У меня с параметром --help запустилось нормально, дальше не стал смотреть:

    mono WebDavMailRuCloud/WDMRC.Console/bin/Debug/wdmrc.exe --help
    WebDAVCloudMailRu 1.0.0.0
    yar229@yandex.ru
    
      -p, --port        Required. WebDAV server port
    
      -l, --login       Required. Login to Mail.ru Cloud
    
      -s, --password    Required. Password to Mail.ru Cloud
    
      --maxthreads      (Default: 5) Maximum concurrent connections to cloud.mail.ru
    
      --user-agent      "browser" user-agent
    
      --help            Display this help screen.
    
      --version         Display version information.

    UPD: Попробовал запустить с login и password, получил ошибку вида:

    Unhandled Exception:
    System.InvalidOperationException: Property 'enabled' not found in configuration element
    at System.Configuration.ConfigurationElement.get_Item (System.String property_name) <0xb50f5608 + 0x000a7> in :0
    at System.Configuration.ConfigurationElement.get_Item (System.Configuration.ConfigurationProperty property) <0xb50f55d8 + 0x0001f> in :0
    at System.Net.Configuration.DefaultProxySection.get_Enabled () <0xb506a270 + 0x0001b> in :0
    at MailRuCloudApi.Account.Login () <0xb50699f8 + 0x000af> in :0

    Проблема в получении значений прокси-сервера по умолчанию:
    https://github.com/yar229/Mail.Ru-.net-cloud-clien...

    По идее, прокси-сервер по умолчанию можно отключить/настроить в файле конфигурации приложения, добавив в секцию configuration нечто вроде этого:

    <system.net>
      <defaultProxy enabled="false" useDefaultCredentials="false">
        <proxy/>
        <bypasslist/>
        <module/>
      </defaultProxy>
    </system.net>

    Но у меня почему-то это не сработало. Можно удалить указанные строки (if (new DefaultProxySection().Enabled)...) из файла и собрать решение заново:

    nano WebDavMailRuCloud/MailRuNetCloudClient/MailRuCloudApi/Account.cs
    MONO_IOMAP=case xbuild WebDavMailRuCloud/WebDAVMailRuCloud.sln

    У меня с login и password запустилось:

    WebDAV server running. Press 'x' to quit.

    Если потребуется журналирование (log4net) и прокси, то придется разбираться в этих проблемах более углубленно.

    -----------------------------------------------------------------------------

    В проверке принимали участие:
    • Debian v8.1
    • Mono v4.2.3
    • XBuild Engine v12.0
    • Nuget v3.4.4.1321
    Ответ написан
    2 комментария
  • Как "подружить" laravel с mysql?

    kotomyava
    @kotomyava
    Системный администратор
    Порт конечно стандартный. Вероятно пользователя root@127.0.0.1 у вас нет, и подключаться рутом можно только через сокет, что и делает по умолчанию консольный клиент. Естественно для веб приложения давать под рутом подключаться незачем, так что надо сделать одно из двух:
    -Создать пользователя с правами на эту базу и @127.0.0.1, и подключаться через 127.0.0.1:3306.
    -Создать пользователя с правами на эту базу, @localhost и подключаться через сокет.

    Ну а mysql root@localhost назначить пароль, если он действительно пустой.
    Ответ написан
    1 комментарий
  • Что такое public?

    @Arik
    сразу практикуюсь без теории)

    лучше задолбить кого вопросами?

    php.net/manual/ru/language.oop5.visibility.php
    Ответ написан
    3 комментария
  • Лучший vpn сервис по вашему мнению?

    CityCat4
    @CityCat4 Куратор тега VPN
    Дома с переломом ноги
    Собственный. Пусть он будет кривой, косой, но за то, что он не сливает логи ты можешь быть уверен. А за все остальные - нет :)
    Ответ написан
    7 комментариев
  • Как в однофайловых компонентах Vue передать props?

    0xD34F
    @0xD34F Куратор тега Vue.js
    export default {
      data () {
        props: ['a'],
        return {
          qwe: "Привет 2"
        }
      }
    }

    Это шизофрения какая-то. Наверное, имелось в виду

    export default {
      props: ['a'],
      data() {
        return {
          qwe: "Привет 2"
        }
      }
    }
    Ответ написан
    Комментировать
  • (form method="POST" action="/form-submit/") Как сделать чтобы данные с формы приходили мне на почту? или хоть куда-то приходили?

    Главная ошибка в том, что вы просто дерете откуда-то код и не думаете как это вообще все должно работать.
    Первое что нужно добавить: <form enctype="multipart/form-data">
    Второе, вам нужно в поле action написать ссылку скрипта, который будет обрабатывать это, например action="/formHandler.php"
    Третье, для того чтобы иметь какой-то доступ к файлу, вам его нужно для начала загрузить куда-то, средствами вордпресс это делается через данную функцию (думаю погуглить на русском варианты реализации вы сможете). Вот например кусок кода, который будет грузить файл на сайт и возвращать ссылку:
    if(isset($_FILES['file2']) && wp_verify_nonce( $_POST['file2_nonce'], 'file2' ) ){
    	$files = $_FILES['file2'];
    	$overrides = array( 'test_form' => false );
    	foreach ($files['name'] as $key => $value) {
    	  if ($files['name'][$key]) {
    	    $file = array(
    	      'name'     => $files['name'][$key],
    	      'type'     => $files['type'][$key],
    	      'tmp_name' => $files['tmp_name'][$key],
    	      'error'    => $files['error'][$key],
    	      'size'     => $files['size'][$key]
    	    );
    	    $movefile = wp_handle_upload($file,$overrides);
                $file_url = $movefile['url']; // Ссылка на файл
    	  }
    	}
    }

    В этом коде важно обратить внимание на следующие вещи:
    • $_FILES['file2'] - тут file2 - название вашего инпута, куда вы грузите файл, например <input type="file" name="file2">
    • $_POST['file2_nonce'] - это скрытый инпут в форме, который вставляется так: <?php wp_nonce_field(); ?>Подробнее об этой функции
    UPD: для работы куска кода с загрузкой файла, нужно в начале скрипта прописать:
    require_once( $_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
    require_once( ABSPATH . 'wp-admin/includes/image.php' );
    require_once( ABSPATH . 'wp-admin/includes/file.php' );
    require_once( ABSPATH . 'wp-admin/includes/media.php' );

    Собственно получив ссылку на файл, нам надо его как-то отправить, самым простым решением будет подключение библиотеки PHP Mailer. С помощью нее можно спокойно прикрепить файл методами:
    $mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
    $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name

    В общем-то это вся, надеюсь, исчерпывающая информация по вашей проблеме.
    Ответ написан
    2 комментария
  • Пройтись по строке и если есть одинаковый символ, exit?

    Stasgar
    @Stasgar
    Обученная макака
    function allUnique($str) {
        $strUniqueChars = count_chars($str,3); // 3 - режим, возвращается строка без повторений символов
         /* Если строка без повторений по длине равна изначальной
         * значит повторений изначально и не было */
        return strlen($str) === strlen($strUniqueChars);
    }
    
    var_dump( allUnique('1234') ); // bool(true)
    var_dump( allUnique('41234') ); // bool(false)

    PHP docs: count_chars
    Ответ написан
    Комментировать
  • Пройтись по строке и если есть одинаковый символ, exit?

    @Flying
    К примеру эта задача вполне себе решается через регулярное выражение, можно проверить здесь.
    Ответ написан
    1 комментарий
  • Как правильно возвращать ошибки в своем API, Laravel?

    могу вручную делать return в каждом методе своего API, но это не выглядит правильным

    Почему? Это нормальная практика. Каждый метод - это часть контроллера, а контроллер должен возвращать ответ. Ответ в Laravel должен быть инстансом Response (массив автоматически конвертируется в него).

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

    Для таких случаев Лара предоставляет возможность создать свой собственный тип ответа, например, ApiResponse. Соответственно, после создания будете вызывать в коде как-то так:
    return response()->api($code, $data);
    Все форматирование будете делать в классе ApiResponse.

    Собственно, чтобы создать, регистрируете в сервис-провайдере новый тип response.
    Response::macro('api', function ($code, $data) {
        return new ApiResponse($code, $data);
    });
    Ответ написан
    3 комментария
  • Как объединить большое количество условий?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Сделайте объект: то, с чем сравниваете, будет именами свойств; то, что выводите, будет их значениями; то, что проверяете - ключ, по которому будет извлекаться значение. Если ничего не получили, подставляете дефолтное значение. Типа вот так:

    alert(({
      1: 'b',
      2: 'c',
    })[a] || 'd');

    Если вдруг среди значений будут такие, чьим логическим эквивалентом является false, то извлекайте значение из объекта только в том случае, если ключ существует:

    const obj = {
      1: 'b',
      2: 'c',
      7: null,
      8: NaN,
    };
    const defaultValue = 'd';

    alert(obj.hasOwnProperty(a) ? obj[a] : defaultValue);
    Ответ написан
    Комментировать
  • Как установить wildcard сертификат от Let's Encrypt на Debian 9?

    t-alexashka
    @t-alexashka
    Сразу пишу legacy код
    Устанавливал по этой схеме около недели назад. Проблем не было, весь процесс занял около 10 минут.

    Если вы недавно меняли dns-записи у домена - возможно они еще не обновились, попробуйте через сутки после смены dns повторить. И да, добавлять txt (и др. записи) имеет смысл только в том сервисе на который ссылаются ns-записи. Если вы добавляете записи у регистратора домена, а ns в данный момент не его - то это бесполезно. Либо ждите пока днс-админка заработает, либо ждите пока обновятся новые записи ns которые вы временно указали.
    Ответ написан
    4 комментария
  • Почему не работает скрипт?

    SagePtr
    @SagePtr
    Еда - это святое
    Рекомендую сразу учиться пользоваться нормальными функциями, вместо дырявой MD5:
    php.net/manual/ru/function.password-hash.php
    php.net/manual/ru/function.password-verify.php
    Ответ написан
    2 комментария
  • Почему VK API ведёт себя так странно?

    @StockholmSyndrome
    может быть, некоторые видеозаписи закрыты настройками приватности и не могут быть получены через API?
    Ответ написан
    1 комментарий