Задать вопрос
  • Где можно заказать code review?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Артур, я посмотрел куски кода в твоих последних вопросах. Если ты продолжаешь игнорировать PSR-2 и использовать нестрогое сравнение (if ($this->get('parametr') == 1)), то нечего пока ревьювить, всё плохо.
    Ответ написан
    11 комментариев
  • Как в Laravel в модели поменять формат даты?

    be_a_dancer
    @be_a_dancer
    Backend/Fullstack Developer
    Вопрос: зачем изменять дату вносимую в базу, если достаточно изменить ее представление во внешнем виде?

    Есть такой вариант - добавить в модель
    protected $casts = [
        'created_at' => 'datetime:d/m/Y', // Свой формат
        'updated_at' => 'datetime:d/m/Y',
    ];


    Ну и прочитайте вот эту главу документации
    Ответ написан
    4 комментария
  • Может ли ClickHouse заменить Mysql?

    @artinnok
    бекенд-программист
    Конечно, нет - это абсолютно разные базы, у которых разное применение.
    ClickHouse - OLAP (подходит для аналитики на больших массивах неизменяемых данных)
    MySQL - OLTP (подходит для нормализованных таблиц с изменяемыми данными)
    Вот версус.
    Ответ написан
    Комментировать
  • Как изменить заголовок ошибки в yii?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый день.
    В файле error.php можно использовать переменную $exception и с её помощью изменить заголовок страницы ошибки.
    Выглядит это так:
    if($exception->statusCode == 404){$this->title = 'Где-то ошибка';}
    /* остальной код файла */

    В результате получите следующее
    5cc2eb713498e509599458.png
    Вместо
    5cc2eb824d16c264476002.png
    Ответ написан
    Комментировать
  • Как не выполнять запрос в течении 30 минут?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Сохранить время выполнения последнего запроса и проверять прошло ли 30 минут с момента последнего запроса. Если прошло, то выполнять запрос и сохранять новое значение.
    Ответ написан
    Комментировать
  • Как не выполнять запрос в течении 30 минут?

    hzzzzl
    @hzzzzl
    let lastRequested = new Date()
    
    if (new Date() - lastRequested > 1000 * 60 * 30) {  // 1000 мс * 60 сек * 30 мин
      lastRequested = new Date()
      // тут запрос
      //
      // а еще лучше обновить lastRequested = new Date()
      // когда запрос вернется успешно
      // чтобы в случае провала его можно было повторить быстрее чем через полчаса
    }
    Ответ написан
    Комментировать
  • Как выглядит sitemap для мультиязычного сайта?

    @grinat
    <url>
        <loc>http://www.example.com/english/page.html</loc>
        <xhtml:link 
                   rel="alternate"
                   hreflang="de"
                   href="http://www.example.com/deutsch/page.html"/>
        <xhtml:link 
                   rel="alternate"
                   hreflang="de-ch"
                   href="http://www.example.com/schweiz-deutsch/page.html"/>
        <xhtml:link 
                   rel="alternate"
                   hreflang="en"
                   href="http://www.example.com/english/page.html"/>
      </url>

    https://support.google.com/webmasters/answer/18907...
    Ответ написан
    Комментировать
  • Как получить доступ к статусу выгрузки файла в Vue.js + axios, с другого компонента?

    potapchino
    @potapchino
    onUploadProgress({loaded, total}) {
      const uploadProgress = Math.round(loaded / total * 100)
      
      store.commit('uploader/setProgress', uploadProgress)
    }


    export const uploader = {
      namespaced: true,
      state: {
        progress: 0
      },
      mutations: {
        setProgress(state, progress) {
          state.progress = progress
        }
      }
    }


    computed: {
      ...mapState('uploader', [
        'progress'
      ])
    }


    <template>
      <div>{{progress}}%</div>
    </template>
    Ответ написан
    Комментировать
  • Тенденции рынка труда для ASP.NET CORE разработчиков?

    Atanvar
    @Atanvar
    Frontend developer
    Помните, что в вакансии пишут все что хотелось бы получить от кандидата.

    В действительности же:
    - Нам нужен .net, c++, фронтент, знание хайлоада, машин лернинга и 10 лет общей хирургии.
    - Знаю .net
    - Вы приняты.
    Ответ написан
    1 комментарий
  • Какой url лучше для SEO?

    AndrewMn
    @AndrewMn
    Эксперт в SEO (с 2006 года)
    Если выбирать из двух предложенных вариантов, то лучше двигаться "от общего к частному" т.е. blog/{blog_title}/{blog_id} . Т.к. получаем структуру, рекомендуемую Яндексом для вебмастеров и по опыту - она будет более полезной для пользователей. Пункт 4 https://yandex.ru/support/webmaster/recommendation... .
    Ответ написан
    2 комментария
  • Готовая админка для Laravel - расскажите пожалуйста о личном опыте использования - что выбрать и зачем?

    arutyunov
    @arutyunov
    Mooza.ru — Делаем сайты
    Можно ещё посмотреть Backpack. Есть кодогенерация из коробки, кастомизируемость и довольно простая и доступная дока. Из минусов — платная лицензия, но бесплатно можно на локалке поставить и пощупать, код в гитхабе.

    Не работал с Нова, но по ощущениям, Нова — это улучшенный и местами упрощённый Бэкпак с симпатичным интерфейсом.
    Ответ написан
    6 комментариев
  • Как сделать отдельный приватный порт для express в docker?

    @de1m
    Если вы подразумеваете, что надо, чтобы другие контейнеры могли заходить на этот порт, то их надо линковать, либо можно сделать совместную сеть для них. Вот тут описано, как надо делать. Это для docker-compose написано, если что.
    Ответ написан
    Комментировать
  • Отказали в гарантийном ремонте MacBook. Как полностью починить?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    купил в рестор Москва, естественно HCN/ чеки есть

    На этом основание, идете в магаз, где покупали этот MacBook, пишите претензию со следующими условиями:

    1. Претензия в 2х экземплярах, одна Ваша, вторая магазу. Претензию, уполномоченный сотрудник магаза обязан зарегистрировать и на Вашей копии претензии поставить номер, печать, дату и подпись.

    2. Читаем гарантийку, если там не указан (или 45 дней, или менее) срок ремонта, то в претензии: в связи с эксплуатацией MacBook (тип устройства, номер, дата покупки итп.) строго в соответствие с гарантийным соглашением и выявленными недостатками, прошу: на основании пункта 1 статьи 20 закона «О защите прав потребителей» устранить недостатки (произвести ремонт) MacBook (тип устройства, номер, дата покупки итп.) в течение не более 7 дней, с момента подписания настоящего соглашения.

    3. Читаем гарантийку, если там указан срок ремонта более 45 дней, то в претензии: в связи с эксплуатацией MacBook (тип устройства, номер, дата покупки итп.) строго в соответствие с гарантийным соглашением, прошу: на основании пункта 1 статьи 20 закона «О защите прав потребителей» устранить недостатки (произвести ремонт) MacBook (тип устройства, номер, дата покупки итп.) незамедлительно, то есть в минимальный срок, объективно необходимый для их устранения с учетом обычно применяемого способа.
    На основание пункта 1 статьи 20 закона «О защите прав потребителей» указанный срок гарантийного ремонта - противоречит законодательству и не может превышать сорок пять дней.

    4. В претензии: на основании пункта 2 статьи 20 закона «О защите прав потребителей» на время ремонта Вашего MacBook, выдать аналогичный ("подменный") MacBook (обладающий этими же основными потребительскими свойствами), либо MacBook моделью и ТТХ выше, чем Ваш (я думаю, Вы будите не против).

    UPD:
    0.1. на основание пункта 2, гуляем недельку и возвращаемся за своим MacBook.
    0.2. на основание пункта 3, ждем звонка из магаза (до 45 дней) и возвращаемся за своим MacBook.
    0.3. на основание пункта 1 и 2, если магаз не произвел ремонт в указанный срок, то пишем новую претензию о возврате денег, получаем билеты банка России и берем новое яблоко... =)
    0.4. Если уполномоченные магазина начинают гавкать, то желательно включить видеозапись и фиксировать все переговоры. При видеозаписи, уровень бешенства в крови резко понижается. Если Вам начнут запрещать вести видеозапись в магазе, говорим следующее: это общественное место, а Вы (уполномоченному) не человек, а должностное лицо.
    Ответ написан
    4 комментария
  • Как избежать колизии в elasticsearch?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Конечно же будет не супер, если старая запись запишется поверх новой.
    Но у нас есть что есть: поле _version спешит на помощь - https://www.elastic.co/guide/en/elasticsearch/refe...
    Только-то и нужно, что использовать версию документа, если версия не соответствует, то выдаст ошибку.
    Ответ написан
    Комментировать
  • Как показать ошибки в Vue от Laravel Request?

    Вам нужно валидировать ваши данные, которые приходят от клиента.
    public function login(Request $request)
        {
            $credentials = $request->only('email', 'password');
    
            $validator = \Validator::make($credentials, [
              'email' => 'required',
              'password' => 'required',
            ]);
    
            if ($validator->fails()) {
              return response()
                ->json(['errors' => $validator->errors()], 422);
            }
    ....
    }


    Код:
    if ($validator->fails()) {
              return response()
                ->json(['errors' => $validator->errors()], 422);
            }

    Вернет клиенту (в случае ошибки), массив errors, со всеми ошибками, которые возникли.

    У меня это работает так: в Login.vue есть метод, который авторизует пользователя:

    login(){
            var app = this
            var user = this.$auth.login({
                params: {
                  email: app.email,
                  password: app.password
                },
                success: function () {
                  this.$store.dispatch('authuser/loadUserData');
                },
                error: function (err) {
                  app.errors = err.response.data.errors;
                },
                rememberMe: app.remember,
                redirect: '/',
                fetchUser: true,
            });
          },

    data(){
          return {
            email: null,
            password: null,
            errors: {},
            remember: true
          }
        },

    Собственно, если мы получили ошибку, то:
    error: function (err) {
                  app.errors = err.response.data.errors;
                },
    добавляем ошибки в массив ошибок, далее этот массив просто выводим:

    <div v-if="errors" v-for="category in errors">
                    <div class="m-alert m-alert--outline alert alert-danger alert-dismissible" role="alert" v-for="error in category">
                      <span>{{ error }}</span>
                    </div>
                  </div>

    Тут два цикла, так как массив errors из ответа, будет содержать элементы: errors_password, errors_email и тд, каждый из которых является массивом. Но это вы уже сами можете в ответе сервера посмотреть.

    На всякий случай прикрепляю полный файл Login.vue:
    Login.vue
    <template>
      <!-- begin:: Page -->
      <div class="m-grid m-grid--hor m-grid--root m-page">
        <div class="m-grid__item m-grid__item--fluid m-grid m-grid--hor m-login m-login--signin m-login--2 m-login-2--skin-2" id="m_login" style="background-image: url(/assets/app/media/img//bg/bg-3.jpg);">
    
    
          <div class="m-grid__item m-grid__item--fluid	m-login__wrapper">
            <div class="m-login__container">
              <div class="m-login__logo">
                <a href="#">
                  <img src="/assets/demo/demo7/media/img/logo/logo.svg" style="height:70px;">
                </a>
              </div>
              <div class="m-login__signin">
                <div class="m-login__head">
                  <h3 class="m-login__title">
                    Авторизация
                  </h3>
                  <div class="m-login__desc">
                    Заполните данные ниже для авторизации:
                  </div>
                </div>
                <form class="m-login__form m-form" autocomplete="off" @submit.prevent="login" method="post">
    
                  <div v-if="errors" v-for="category in errors">
                    <div class="m-alert m-alert--outline alert alert-danger alert-dismissible" role="alert" v-for="error in category">
                      <span>{{ error }}</span>
                    </div>
                  </div>
    
    
                  <div class="form-group m-form__group">
                    <input type="email" id="email" class="form-control" placeholder="E-mail" v-model="email" required autofocus>
                  </div>
    
                  <div class="form-group m-form__group">
                    <input type="password" id="password" class="form-control" v-model="password" placeholder="Пароль" equired>
                  </div>
                  <div class="row m-login__form-sub">
        						<div class="col m--align-left m-login__form-left">
        							<label class="m-checkbox  m-checkbox--focus m-checkbox--state-accent">
        							<input type="checkbox" name="remember" v-model="remember" checked="checked"> Запомнить меня
        							<span></span>
        							</label>
        						</div>
        						<div class="col m--align-right m-login__form-right">
        							<router-link :to="{ name: 'register'}" id="m_login_forget_password" class="m-link">Забыли пароль?</router-link>
        						</div>
        					</div>
    
                  <div class="m-login__form-action">
                    <button type="submit" class="btn btn-accent m-btn m-btn--pill m-btn--custom m-btn--air  m-login__btn">Авторизоваться</button>
                  </div>
    
    
                </form>
              </div>
              <div class="m-login__account">
                <span class="m-login__account-msg">
                У вас еще нет аккаунта?
                </span>&nbsp;&nbsp;
                <router-link :to="{ name: 'register'}" class="m-link m-link--light m-login__account-link" style="border-bottom: 1px solid #6a6279;">
                  Зарегистировать аккаунт
                </router-link>
              </div>
    
              <div class="m-login__forget-password">
                <div class="m-login__head">
                  <h3 class="m-login__title">
                    Забыли пароль?
                  </h3>
                  <div class="m-login__desc">
                    Укажите Ваш e-mail для восстановления пароля:
                  </div>
                </div>
                <form class="m-login__form m-form" action="">
                  <div class="form-group m-form__group">
                    <input class="form-control m-input" type="text" placeholder="Email" name="email" id="m_email" autocomplete="off">
                  </div>
                  <div class="m-login__form-action">
                    <button id="m_login_forget_password_submit" class="btn btn-focus m-btn m-btn--pill m-btn--custom m-btn--air  m-login__btn m-login__btn--primaryr">
                      Выслать новый
                    </button>
                    &nbsp;&nbsp;
                    <button id="m_login_forget_password_cancel" class="btn btn-outline-focus m-btn m-btn--pill m-btn--custom m-login__btn">
                      Отмена
                    </button>
                  </div>
                </form>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- end:: Page -->
    
    </template>
    
    <script>
      import { mapState, mapActions } from 'vuex';
      export default {
        data(){
          return {
            email: null,
            password: null,
            errors: {},
            remember: true
          }
        },
        computed: mapState({
          user: state => state.authuser.user
        }),
        methods: {
          login(){
            var app = this
            var user = this.$auth.login({
                params: {
                  email: app.email,
                  password: app.password
                },
                success: function () {
                  this.$store.dispatch('authuser/loadUserData');
                },
                error: function (err) {
                  app.errors = err.response.data.errors;
                },
                rememberMe: app.remember,
                redirect: '/',
                fetchUser: true,
            });
          },
    
        }
      }
    </script>
    Ответ написан
    5 комментариев
  • Нужно приложение для сравнения 2-х изображений, есть такое?

    @Macbet
    Linux программист
    попробуй вот так, например https://imagemagick.org/script/compare.php
    Ответ написан
    Комментировать
  • Как работает новый закон о проверке счетов физических лиц?

    LEGALAID
    @LEGALAID
    Lawyer . Legl AID
    Тотальной проверки россиян не будет.
    У налоговой и сейчас есть все необходимые инструменты для отслеживания движения средств по счетам физических лиц. Кроме того, Правительство РФ и правда готово наделить налоговиков и сотрудников Росфинмониторинга новыми функциями, но только в отношении иностранных граждан, а также карт иностранных банков, которыми пользуются граждане РФ. Правительство РФ внесло на рассмотрение Госдумы законопроект № 490061-7 с поправками в Федеральный закон «О противодействии легализации (отмыванию) доходов, полученных преступным путем, и финансированию терроризма» о расширении полномочий Росфинмониторинга.

    Чиновники предлагают, чтобы все операции по получению наличных денежных средств в России с карточек, выпущенных иностранными банками, подлежали обязательному контролю. Практически одновременно с этим появилось постановление Правительства, регламентирующее обязанность банков отчитываться перед налоговыми органами обо всех иностранных клиентах. Документ уже подписал глава кабмина Дмитрий Медведев, по словам чиновников, он необходим для присоединения России к международному обмену налоговой информацией. Сами налоговики, между тем, ответили на многочисленные сообщения СМИ об изменениях в контроле за переводами между счетами граждан с 1 июля 2018 года. Хотя никаких анонсированных поправок в Налоговый кодекс нет, сотрудники ФНС намерены использовать существующие инструменты для ужесточения контроля и выявления доходов физлиц, с которых они обязаны платить НДФЛ. ФНС России напомнила всем налогоплательщикам о том, что уже с 1 сентября 2016 года подпункт 1.1 статьи 86 НК РФ обязывает все российские банки информировать налоговые органы об открытии/закрытии гражданами любых счетов.

    Таким образом, доступ к этой информации о счетах граждан у налоговиков есть уже давно. А с 1 июня вступили в силу поправки в НК РФ, в соответствии с которыми банки обязаны информировать налоговые органы также обо всех счетах граждан и организаций в драгоценных металлах. При этом запросить информацию о счетах, вкладах и электронных кошельках граждан налоговые органы могут только при проведении проверки в отношении конкретного физического лица.
    Следует также знать, что есть штрафы, которые предусмотрены за ведение предпринимательской деятельности без ИП: ⠀
    Административная ответственность (ст. 14.1 КоАП РФ), штраф от 500 до 2000 руб.; ⠀
    ⠀Налоговая ответственность (ч. 1 ст. 116 НК РФ), штраф до 10 000 руб. + 10% от полученного от этой деятельности дохода;⠀
    ⠀Уголовная ответственность (ст. 171 УК РФ), наступает в случае если нанесен ущерб в крупном и особо крупном размере.
    Ответ написан
    1 комментарий
  • Как работает новый закон о проверке счетов физических лиц?

    vicodin
    @vicodin
    Имею некоторый опыт
    Если писать такие сведения с аккаунта с реальными персональными данными - вероятность прихода налоговой возрастает :)
    Ответ написан
    Комментировать
  • Как работает новый закон о проверке счетов физических лиц?

    VMesser
    @VMesser
    gitter.im/VBA-developers
    МоеДело прислало мне рассылку с разъяснением. Во-первых закон касается лицевых банковских счетов физиков, то есть ЯД тут сразу мимо кассы. Во-вторых речь идёт о регулярных поступлениях, то есть в одно и то же время похожие суммы. В-третьих, наложить ограничение они могут только по решению суда, а значит ввязываться в эту историю они будут в исключительных случаях.
    Ответ написан
    4 комментария
  • Как выбрать значение в фигурных скобках?

    Stalker_RED
    @Stalker_RED
    Ответ написан
    Комментировать