• Что такое "Трейс вызова метода"?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Последовательность вызова методов. Кто вызвал текущий метод, кто вызвал того, кто вызвал текущий метод и так далее.
    Ответ написан
    Комментировать
  • Как в PHP вычисляется count()?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    второе
    потому что там дураков нет, каждый раз пересчитывать одно и то же.
    Ответ написан
    Комментировать
  • Как стать embedded разработчиком?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Спрос действительно такой маленький. Причём это не временное явление, двадцать лет назад я столкнулся ровно с той же проблемой.
    Ответ написан
    Комментировать
  • Как настроить xdebug для докера на vps?

    Vamp
    @Vamp
    У вас сложности с тем, что xdebug является инициатором коннекта на ваш домашний ip. И если домашний провайдер выдаёт вам не белый IP, то напрямую такой коннект сделать не удастся.

    Выходом может быть проброс порта через ssh.

    ssh -R 9003:172.17.0.2:9003 user@vpsaddr
    Данная команда установит ssh соединение с логином user на ваш vps по адресу vpsaddr и откроет на этом сервере порт 9003, который сквозь ssh соединение будет прозрачно проксироваться на 9003 порт уже на вашем локальном компьютере.

    Вам нужно будет только узнать какой локальный IP адрес у вашего контейнера и подставить его вместо 172.17.0.2, который я указал для примера.

    Узнать его можно командой
    docker inspect ваш-контейнер | grep IPAddress
    Этот ip адрес нужно прописать в xdebug.client_host и в опцию -R вместо 172.17.0.2.
    Ответ написан
    8 комментариев
  • В go нету встроенного reverse метода для массива?

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

    Поясняю, го это строго статически типизированный язык, в отличие от джаваскрипта, который является динамически типизированным. Поэтому чтобы сделать такую функцию, пришлось бы писать ее реализацию для всех возможных типов, а это невозможно. Да, можно покрыть все типы стандартной библиотеки, но это не покроет типы, которые сам пользователь может создать.
    Поэтому будет такая штука как дженерики (обобщения), это когда можешь написать функцию, которая работает со слайсом любого типа. И ей важно будет только то, что это слайс, она сможет переместить там элементы, не заглядывая в их тип.
    Ответ написан
    2 комментария
  • Как можно на VPS, на docker+nginx запустить сайт с index.html?

    @rodion4dev
    Если вкратце - сделать сборку Docker образа, в процессе которой сначала собирается React, кладётся в папочку (внутри образа) и запускается Nginx на отдачу статики из неё.

    Вот как пример.
    Ответ написан
    Комментировать
  • Как присвоить значение одного элемента массива в другой элемент массива?

    0xD34F
    @0xD34F
    $values = array_combine(
      array_column($example2, 'SECTION_ID'),
      array_column($example2, 'VALUE')
    );
    
    $example3 = array_map(function($n) use($values) {
      $n['VALUE'] = $values[$n['SECTION_ID']];
      return $n;
    }, $example1);
    Ответ написан
    1 комментарий
  • Как добавить значение из одной коллекции в другую если выполняется условие?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В цикле. В данном случае - вложенном.
    А если бы основная коллекция индексировалась через id, а не цыферками, то можно было бы обойтись одним.
    Ответ написан
    Комментировать
  • Что наследуется в ООП? Как работает наследование?

    Adamos
    @Adamos
    Publlic / protected / private - это архитектура. Компьютеру они на хрен не нужны, они ограничивают программиста.
    И уж если программист считает, что метод должен быть публичным - значит, любой наследник должен его реализовывать. Если приватным - значит, нечего в него лезть наследникам. Если защищенный - значит, только этот класс и его наследники о том, что он существует, и должны знать.

    А если у вас сын утки плавает, как утка, но молчит, как рыба - это не он урод, а вы с планированием классов обосрались. Нет, не тот парень, от чьих классов вы наследуетесь, а именно вы. И те парни, которым надо будет поддерживать ваш код (если они знают не только о принципе Лисков, но и где вы живете) смогут очень доходчиво вам это объяснить.
    Ответ написан
    5 комментариев
  • Где в доке описано поведение тэггирования сервисов?

    BoShurik
    @BoShurik Куратор тега Symfony
    Symfony developer
    https://symfony.com/doc/current/bundles/best_pract...

    Services should not use autowiring or autoconfiguration. Instead, all services should be defined explicitly.

    The reason is that bundles shouldn't rely on features such as service autowiring or autoconfiguration to not impose an overhead when compiling application services.


    То что вы описали - как раз autoconfiguration
    Ответ написан
  • В чем сложность поддержки проектов на Go?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Более четырёх лет пишу на Go, лично для меня поддерживать проекты на других языках сложнее ))
    До Go много лет писал на Perl/PHP/Python/Java/C/Ruby on rails/JavaScript и "крутил" еще не мало чего.
    Сейчас пишу только на Go и Python.

    Основная сложность в Go - это то, что если вы начинаете писать "криво" - то писать так очень трудно :))
    Подход к реализации в Go достаточно непривычный для тех, кто приходит из скриптовых языков.
    Например запрет циклических импортов - это самое первое, что "взрывает" мозг :)
    Нужно время чтобы адаптироваться после скриптовых языков.

    Про обработку ошибок - это да, это, пожалуй, единственное что мне не нравится в Go.
    Для себя я решил эту проблему за 1-2 часа :) и больше меня это не беспокоит.

    По ООП - в Go оно есть, лично мне оно нравится намного больше, чем ООП в других языках ))
    Всё, что реально нужно - всё есть, но при этом ничего лишнего нет.
    Интерфейсы - просто прекрасны :)) Каналы, горутины - это просто "счастье" :))

    А если объективно - то я бы не стал говорить о сложности поддержки проекта применимо к какому то конкретному языку.

    Как правило сложность поддержки возникает там, где нормальная архитектура не заложена в проект.
    Т.е. проект как могла так и писала куча людей плюс, как обычно, сделать нужно было побыстрее )), от этого никто вообще не думал об архитектуре и получилось то, что получилось :))
    Про покрытие тестами и документацию мы вообще не говорим )))

    А когда в таком проекте нужно что-то доработать или исправить ошибку, то почти всегда очень не просто найти то место, где нужно править, и после правок в одном месте, как правило, что-то ломается в другом :)

    Как минимум, нужно соблюдать принципы SOLID, иначе код получается, мягко говоря, не поддерживаемым.
    Но понимание этих принципов так же приходит с опытом, их нельзя научиться соблюдать просто прочитавши книгу или статью. Нужно сделать несколько проектов используя эти принципы, написать криво, понять как было бы правильно, всё переделать и так несколько раз.
    Тогда, со временем, начнёт получаться понятный и легко поддерживаемый код.

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

    Хочется добавить, что как бы не писали про Go, что он простой и т.д. - он явно сложнее Python/PHP и т.д.
    Это еще один повод сказать, что поддерживать код на Go сложно ))

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

    Adamos
    @Adamos
    Блокчейн - технология хранения. У нее есть два плюса.
    Во-первых, архив самоверифицируется. Нельзя изменить старые записи, не переписав все следующие.
    Поэтому, во-вторых, можно эти данные раздать всем, кто захочет их хранить, дать к ним публичный доступ и защититься от потери этих данных, не рискуя их достоверностью.
    Применить технологию можно, в принципе, много где - хоть в онлайн-игрушке, хоть в электронном дневнике, хоть вообще на Госуслугах.
    Но тут появляются вопросы. Точнее, один вопрос.
    А зачем?!
    Ответ на него пока нашли только криптовалюты, немножко банкинг... и все.
    Публичное государственное голосование в теории могло бы быть улучшено блокчейном, но на практике оно могло бы быть улучшено и без него, только организаторам это на хрен не надо.
    Ответ написан
    4 комментария
  • Какой выбрать macbook?

    kawabanga
    @kawabanga
    M1! Ищи б.у., доплачивай деньги.

    Air на M1 уделывает MPB на 2015 i7. И все.
    Ответ написан
    3 комментария
  • Nginx + php-fpm: где накапливается очередь для процессов и можно ли мониторить эту очередь?

    karabanov
    @karabanov
    Системный администратор
    Есть у Nginx нативный мониторинг NGINX Monitoring, в частности видно количество активных и ожидающих соединений.
    Ответ написан
    Комментировать
  • Как задать условие для первых трех итераций цикла?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    $counter = 0;
    while($row = mysql_fetch_assoc($request)) {
      if ($counter++ < 3) {
        // особое тело цикла
      } else {
        // тело цикла
      }
    }
    Ответ написан
    4 комментария
  • Что такого хорошего в иммутабельности?

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

    Вот тупой пример:
    let today = now().date
    let tomorrow = today.addDays(1)
    assert(today != tomorrow)

    И вот если DateTime мутабельный, то мы можем словить ошибку в этой ситуации.
    Иммутабельность же позволяет на корню этого избежать.

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

    А отстутсвие сайд-эффектов позволяет делать вычисления ленивыми, и тоже даёт возможность безопасно распараллеливать, тк нет привязки к порядку операций.
    Ответ написан
    Комментировать
  • "Умение профилировать и отлаживать свой код без использования функции dd/var_dump" - это как?

    karabanov
    @karabanov
    Системный администратор
    Это о xdebug
    Ответ написан
    Комментировать
  • Какой вид инсерта быстрее?

    delphinpro
    @delphinpro
    frontend developer
    Мульти инсерт быстрее.
    insert into t values (), (), ()
    Ответ написан
    Комментировать
  • Как должен выглядеть GET запрос в Spring REST?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Spring
    Седой и строгий
    Все варианты неправильные. Идентификатор юзера в URL'е вообще появляться не должен.
    Ответ написан
    5 комментариев