• Как сделать вертикальный текст на всю высоту?

    @imandrey
    мало информации

    <div class="block">
    <img src="img.png"/>
    </div>


    .block{
    htight:100vh;
    display:flex;
    align-items:center;
    text-align:right;
    }
    Ответ написан
    Комментировать
  • Как отсортировать XML файл по году через PHP?

    JaxAdam
    @JaxAdam
    Junior Full-Stack Developer
    /* Берем контент файла */
            $xmlString = file_get_contents($xmlFilePath);
            // Преобразуем xml в массив
            $xml = json_decode(
                json_encode((array)simplexml_load_string($xmlString)), true
            );

    + Пример сортировки из другого форума:
    $data = array(
        array(
            "title" => "Another title",
            "date"  => "Fri, 17 Jun 2011 08:55:57 +0200"
        ),
        array(
            "title" => "My title",
            "date"  => "Mon, 16 Jun 2010 06:55:57 +0200"
        )
    );
    
    function sortFunction( $a, $b ) {
        return strtotime($a["date"]) - strtotime($b["date"]);
    }
    usort($data, "sortFunction");
    var_dump($data);
    Ответ написан
    Комментировать
  • Микросервисы при разработке сервера?

    @0nkery
    1. Да, через тот же RabbitMQ вы можете организовать общение ваших микросервисов. Особенно RabbitMQ будет полезен в случае, если вы сможете избежать большого количества прямых запросов к отдельным микросервисам, а сможете представить потоки данных в виде событий и их обработчиков.
    2. Да, будет запущен в отдельном процессе. Это можно назвать параллельными вычислениями. :) Ну и вообще в линуксе разница между отдельным системным процессом и отдельным потоком (thread'ом) внутри одного системного процесса размыта (отличаются у них фактически только параметры создания -- есть ли общая память с какими-то другими потоками исполнения).
    3. Не знаком, но знаю, что многие компании убегают с ноды, потому что не хватает производительности или запутанная модель исполнения.

    Ну и вообще, если вы переживаете насчет производительности, попробуйте что-нибудь более производительное, чем нода: Erlang/Elixir, Go, .NET и так далее.

    Так же попробуйте сначала написать монолитный прототип, а от него плясать в построении микросервисов -- так вы сможете четче понять свою предметную область, данные в ней и операции над ними. А микросервисы -- это скорее средство разделения ответственности в больших командах, чем способ увеличить производительность. В большинстве случаев, думаю, производительность от таких вот микросервисов только падает.
    Ответ написан
    Комментировать
  • Как организовать архитектуру взаимодействия микросервисов?

    Не нужно делать бложик на микросервисах, что для учебных целей, что для боевых.
    Всё что вы описали о бложике - комменты, юзеры, посты - это всё достаточно сильно связанные данные, и их нет смысла обрабатывать в разных сервисах. В том решении, что вы предложили всё будет отлично, если заменить "микросервис" на "контроллер" (который из MVC), будет классическое решение учебной задачи.

    Нужно придумать задачу, где сервисы будут более независимы друг от друга. Тогда и не будете мучаться чтобы понять, как сделать сервисы более автономными. В идеале любой сервис может продолжить свою работу, и реализовывать все или часть своих функций, если другие сервисы лежат. Хорошо например, если между сервисами А и Б взаимодействие реализовано через очередь сообщений - тогда упавший сервис Б после поднятия разгребёт эту очередь и выполнит всё то, что успел попросить у него сервис А пока Б лежал.

    Об аутентификации можно тоже говорить много и долго, обычно чтобы жить некоторое время без сервиса аутентификации её делают по токенам (JWT например). Тогда целевой сервис сам может проверить, авторизован человек или нет.

    Если уж так хочется бложик, то я бы оставил его в покое в виде самостоятельного сервиса, а в качестве других сервисов сделал бы:
    - уведомления о новых комментариях/постах в мессенджер/почту (как раз хорошо будет через MQ общаться с основным сервисом);
    - какую-нибудь аналитику элементарную, которая независимо собирается, например по посетителям, телеметрию короче;
    - сервис автопостов - заказываешь пост с нужным содержимым на указанную дату и время, этот сервис пользуется API основного сервиса бложика и постит что-либо без вашего участия.

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

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Принимаете данные формы с телефоном, рисуете форму ввода кода для подтверждения.
    На бекенде генерите некий случайный код, связываете его с введенным номером и помечаете как непроверенный. Через СМС-гейт или сервисы оправки СМС отправляете этот код на телефон. Клиент получив код - вбивает его в форме ввода. Если код совпадает - номер телефона подтвержден.
    Ответ написан
    Комментировать
  • Как загрузить большой XML?

    NeiroNx
    @NeiroNx
    Программист
    Бльшие XML не надо пытаться обработаь как DOM целиком - не влезет. Вы еще базу ФИАС не видели там один файл 7 гиг.

    Попробуйте читать постепенно и выковыривать <company></company>
    Ответ написан
    5 комментариев
  • Как загрузить большой XML?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Я бы сделал так:
    1. 1 проход заполнение словаря сервисов в памяти, причем первичный ключ сами гененируете
    2. удаление индексов из таблицы сервисов и пакетная вставка сервисов
    3. Восстановление индексов и identity
    4. Снятие индексов с базы организаций
    5. Пакетная вставка организаций по ~ 10 000 за раз.
    6. Восстановление индексов, identity , ограничений и внешних ключей

    Причем все это лучше делать на соседней базе, а потом менять их местами.
    Ответ написан
    2 комментария
  • Как с помощью LOAD XML INFILE разобраться повторяющиеся теги и загнать их в Mysql?

    zergon321
    @zergon321
    Попробуйте процедуру со следующим кодом:
    DECLARE size INT UNSIGNED DEFAULT ExtractingValue(xml_file, "count(//item)");
    DECLARE counter INT UNSIGNED DEFAULT 1;
    
    WHILE counter <= size DO
        INSERT INTO your_table
        VALUES
        (
        ExtractValue(xml_file, "//item[$counter]/name"),
        ExtractValue(xml_file, "//item[$counter]/photo[1]"), #элементы нумеруются с 1, а не с 0; 
        ExtractValue(xml_file, "//item[$counter]/photo[2]") #и так для всех остальных фото
        );
        SET counter = counter + 1;
    END WHILE;
    Ответ написан
    Комментировать
  • Можно ли регистрироваться самозанятым для уплаты налогов от рекламы на сайте?

    @Mirkss
    всякое бывало)
    Можете.
    Хотя изначально для самозанятых предусматривался весьма ограниченный список видов деятельности, впоследствии понятия слегка поменялись и стало возможным почти все, включая очень неожиданные виды деятельности.

    Только учтите, что 4% - при оказании услуг физическим лицам. Если вам платит юрлицо - вы должны заплатить 6%.

    Конвертация в рубли не является операцией с ценными бумагами, но учтите, что WMZ - это валюта, и есть тонкости - например, вы должны в тот же день отправить оплатившему чек (квитанцию) с суммой в рублях (пересчитав полученное от него по текущему курсу цб). Также погуглите _официальную_ информацию, попадаете ли вы под валютный контроль при такой схеме работы.

    И кстати, вы всегда можете написать письмо в налоговую инспекцию с вопросом и получить официальный ответ. Я рекомендую это сделать независимо от ваших выводов сейчас - у вас будет официальная бумага, являющаяся основанием для использования определенной схемы работы.

    Удачи!
    Ответ написан
    Комментировать
  • Как привести данные к одному виду?

    coderisimo
    @coderisimo
    Используйте регулярки. Степень их изощренности зависит от исходных данных и вашей лени. Выделяйте общие признаки и заменяйте на то, что нужно.
    5ea553d25a14b314612250.jpeg
    Ответ написан
    Комментировать
  • Почему не работает dataset?

    var p = document.getElementsByClassName("step-form")[0];
    Ответ написан
    1 комментарий
  • Как использовать Di container?

    @Wentixon
    Рекомендую почитать книгу про паттерн или вот этот сайт посмотреть, в частности паттерны стратегия. Тогда думаю все станет намного понятнее, так как сейчас у вас даже вопросы неверные, а вообще без опыта в такие дебри лучше не лезть

    Если вкратце то:
    Вопрос1 - нужно ли всё равно передавать параметр в конструктор вызываемого контроллера или можно просто вызывать без параметров?

    У нас есть контейнер, в нем при запуске приложения мы регистрируем классы (сервисы). При регистрации мы связываем абстракцию (интерфейс) и реализацию (конкретный класс), а также впринципе говорим нашему приложению КАК создать конкретный объект. Потом же мы делаем просто так и получаем готовый объект
    // Получаем объект интерфейса из любой точки приложения
    $container->get(MyInterface::class);


    То есть чтобы такой подход работал, нам надо где то (до запуска приложения) сказать как нам этот интерфейс создать, это мы и делаем с помощью контейнера

    $container->register(MyInterface::class, function () {
      return new MyConcreteClass('какие то параметры');
    });


    Вопрос2 - где вообще надо делать $container->get('что-нибудь'); ? В самом контроллере как-то неправильно, наверное - ибо тогда всё равно зависимость. Где это делать?

    Во-первых, контроллер это обычный класс, во-вторых принцип DI заключается в том, чтобы у вас классы не зависили от конкретных реализаций и явно ЗАВИСИЛИ от АБСТРАКЦИЙ. Это самое важно что нужно понять. Отвечая на вопрос - брать напрямую из контейнера сервисы надо ЗА сервисами, то есть в сервис провайдере и выше

    Ну и кстати современные фреймворки достаточно умны и создают классы необходимые конструктору самостоятельно, если они достаточно простые, более сложные сервисы все равно надо регистрировать.

    Вот короче пример написал который впринципе все объясняет, если непонятно спрашивай

    interface CartRepository
    {
        public function add(CartItem $item);
        public function getAll();
    }
    
    class SessionCartRepository implements CartRepository
    {
        ...
    }
    
    class DbCartRepository implements CartRepository
    {
        ...
    }
    
    class Cart
    {
        public function __construct(CartRepository $repository) 
        {
            ...
        }
    
        public function getTotal()
        {
            ...
        }
    }
    
    // Service provider
    $container->register(CartRepository::class, function ($container) {
        if ($user = $container->get('auth')->getUser()) {
            $repository = new DbCartRepository($container->get('db'), $user->id)
        } else {
            $repository = new SessionCartRepository();
        }
    
        return $repository;
    });
    
    $container->register(Cart::class, function ($container) {
        return new Cart($container->get(CartRepository::class));
    });
    Ответ написан
    1 комментарий
  • Как вставлять много текста в файл?

    DevMan
    @DevMan
    так же как и мало текста, только много.

    fopen и подобные имеют смысл только, если нужна длительная или индивидуальная работа с файлом.
    для одноразовой операции вполне годится file_put_contents.
    Ответ написан
    1 комментарий
  • Как запретить символ через preg_match?

    makag
    @makag
    а если так
    if (preg_match("/[^a-zA-Z0-9]+$/", $data['login']) == 1) 
      {    $errors[] = 'Вы используете запрещенные символы! Используйте латинские буквы и цифры.';   }
    Ответ написан
    Комментировать
  • Как спроектировать проверку?

    @ddd329
    Привет! Ну если вопрос касается проектирования, то тут сразу бросается в глаза понятие Service. В предметной области его желательно не использовать, т.к. данный термин очень перегруженный и имеет много понятий в программировании. Я видел в одном проекте его заменили на Product, но ладно не суть...
    Паттерн "Спецификация" я думаю тут не особо уместен. Можно сделать так, что каждый Сотрудник содержит в себе поле со списком Документов, и для того чтобы выяснить может ли сотрудник оказывать услугу, то можно примерно так:
    if (employee.СanProvideService(service)) ...
    Ответ написан
    Комментировать
  • Как сохранить id в модель?

    slo_nik
    @slo_nik Куратор тега Yii
    Доброе утро.
    Естественно у Вас не будет сохранять потому, что Вы не загружаете модель из POST, её там просто нет. Для этого Вам и потребовался скрытый input, что бы можно было загрузить необходимую модель через $model->load(). Поэтому со скрытым input всё работает.
    Если Вы уберёте из кода загрузку модели, в которой только один id, то всё сработает.
    Например, модель с единственным атрибутом id у Вас Direction. Значит в действии надо сделать так
    $model = new Direction();
    $modelLang = new DirectionLang();
    
    if ($modelLang->load(Yii::$app->request->post()) && $model->save()) {
         $modelLang->lang_id = 2;
         $modelLang->direction_id = $model->id;
         $modelLang->save();
          var_dump($model->getErrors());
          var_dump($modelLang->getErrors());
    
         return $this->redirect(['view', 'id' => $model->id]);
    }

    В этом случае всё сработает и можно удалить скрытый input из формы.
    Ответ написан
    3 комментария
  • YII2:Как получать настройки модуля в контроллере?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый день.
    Если Вы указываете свойство в модели, то обращаться надо так:
    public $filename;
    
    $model = new Image();
    $model->filename;

    Если Вы желаете указать это параметром модуля, то указывайте в классе модуля. Или в конфигурационном файле как параметр
    'main' => [
                'class' => 'app\modules\main\MainModule',
                'layout' => 'main.php',
                'layoutPath' => '@app/modules/main/views/layouts',
                'params' => [
                    'test' => 'test1',
                    'test2' => 'test22'
                ]
            ],

    Тогда обратиться можно так:
    // Если указали в классе модуля public $filename
    $main = Yii::$app->getModule('main');
    echo $main->filename;

    Или так:
    // Если указали параметром в конфигурационном файле.
    $main = Yii::$app->getModule('main');
    echo $main->params['test'];
    Ответ написан
    3 комментария
  • Как минимизировать код яндекс карт?

    Adamos
    @Adamos
    ЯндексКарта с одним, собственно, объектом - адресом компании

    Заменяется на скриншот этой карты, щелчок по которому открывает страницу с полноценной картой. И все летает.
    Ответ написан
    Комментировать
  • Как сделать анимацию трансформирующую один элемент в другой?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Является ли желтая квадратная форма в конце анимации видоизмененной кнопкой или же это совершенно другой элемент разметки?

    По смыслу - это другой элемент. Если мы говорим про более-менее компонентный подход к верстке, то это должно быть очевидно. Кнопка - один компонент. Всплывающее окошко - другой компонент. Набросал небольшую заготовку:


    С такими анимациями можно долго играться, самое главное - проверить в конечном итоге кроссбраузерность. А то в хроме и FF работает, а в каком-нибудь IE всякое может случиться.

    P.S.: Но в целом - я голосую за реализацию таких вещей целиком на JS. Практика показывает, что в проектах с такими анимациями очень быстро собирается большое количество одновременно анимирующихся значений у большого количества элементов, которые нужно синхронизировать между собой. На CSS голова лопнет все это делать. И да, чем больше всего меняется в CSS-анимациях в единицу времени, тем выше шанс найти какой-нибудь редкий баг и долго ломать себе голову в поисках проблемы. Лучше уж взять какую-нибудь библиотеку вроде anime.js или любимый многими GSAP и использовать их.
    Ответ написан
    Комментировать