• Что с тостером?

    Nomad_77
    @Nomad_77 Куратор тега Тостер
    Product manager at habr.com
    Привет.

    Переносили базу данных на одном из наших сервисов, что-то пошло не так и произошло пересечение нагрузки на серверах. Сейчас всё должно работать штатно.

    UPD от коллег из эксплуатации:
    Сложилось два фактора, почти независимо. Начали работы с базой данных Карьеры и примерно параллельно получили сложнодиагностируемую проблему сетовой связности. Пинали на новый кластер баз данных (который непричём в итоге), на пересечение факторов нагрузки, на общекривые руки, и потратили время на миграцию на тестовый с около-старыми настройками (что конечно ничего не дало). Переспали с этим и на утро обнаружили проблему связности почти случайно. После этого всё стало на свои места.
    Ответ написан
  • Зачем пользоваться сейчас препроцессорами sass и scss?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Посмотрите на бутстрап.
    Единственный файл variables.scss позволяет гибко кастомизировать весь фреймворк.
    Стили структурированы.

    Это два основных преимущества: централизованное управление и организация кода.

    Далее, довольно много популярных компонентов и плагинов поставляются с scss/less исходниками. При необходимости кастомизации (а такая необходимость присутствует почти всегда), вы можете пойти тремя путями:

    1. Скопировать себе файл стилей и переписать его
    2. Подключить оригинальные стили и переназначить селекторы в своей таблицы.
    3. Подключить исходники и только переназначить переменные

    Еще кейс:

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

    Еще:

    Нам нужно задавать размеры в rem.

    Мы можем пойти по плохому пути: назначить руту font-size: 10px и легко рассчитывать ремы в уме. Но ведь задавать пиксели для html не следует.
    Или мы можем написать функцию toRem() в препроцессоре и использовать ее.

    Не говорю уже о более сложных расчетах.
    Или о громоздких.
    Вот например: https://codepen.io/delphinpro/pen/QvLZxg?editors=0100
    Посмотрите строку 62 в стилях. Там генерится 60 селекторов. Удобно будет такое писать на голом CSS?

    Могу еще писать, но время дорого.
    Ответ написан
    Комментировать
  • Как спроектировать фреймворк?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Если не можешь разобраться на 100% почему и что где использовано в https://github.com/phpstan/phpstan-src/tree/master... (хотя бы в этом неймспейсе), то забудь, хорошо не получится.

    Смешные видосики смотреть не стоит. Обьяснить, как действительно сделать хорошо, не имея опыта и не зная почему кто-то делает так, как делает (как то команда phpstan) - невозможно.
    Ответ написан
    5 комментариев
  • TailwindCSS — не вредит ли такое количество тегов в HTML оптимизации сайта?

    MrDecoy
    @MrDecoy
    Верставший фронтендер
    Не является ли это минусом?

    Является.

    Минусы:
    • Ухудшается читаемость
    • Увеличивается вес HTML, однако нормальные браузеры\сервера общаются контентом в сжатом виде. Например сжатие с помощью gzip. Сжатие на выходе получается не плохое, поэтому с точки зрения трафика - не хорошо, но не смертельно.
    • С точки зрения DOM - конечно 1000 утилитарных классов на одном элементе это тоже не будет хорошо влиять на скорость отрисовки, построение CSSOM и так далее. Но браузеры делают это достаточно быстро. Разница с традиционным подходом на глаз может быть будет заметна только на медленных устройствах.
    • Часто такие css решения добавляют !Important в код, а это усложняет переопределние и тд, но у tailwind вроде всё ок с этим.
    • Если нужно будет поменять оформление какого-то блока, то Вам нужно будет пойти в разметку, а не в стили. А если Вы мешаете подходы, когда у Вас и атомарный и традиционный, то может сложится ситуация, когда нужно будет пойти и в разметку и в css.
    • Куча мусора в инструментах разработчика при отладке.

    Плюсы:
    • Лёгкое и быстрое прототипирование

    Итого:
    Каждому инструменту своё место. Нужно что-то быстро набросать, будь то прототип, mvp или небольшой лэндинг или Вы бэкенд разработчик которого заставили верстать - допустимо.
    В остальных случаях - сомнительно.
    Ответ написан
    4 комментария
  • Как правильно ответить на данный запрос из США?

    Please provide an email response specifically identifying the country in which the [Product Name] Software is developed and maintained.
    В письме укажите свою страну...
    If the country of origin is outside the United States, please provide any information you may have stating that testing is performed in the United States prior to supplying products to customers.
    ...скажите, что вы никакого тестирования в США не проводили, а про других ничего не знаете...
    Additionally, if available, please identify all authorized resellers of the product in question.
    ...поскольку ПО свободное, никто его не перепродаёт...
    Lastly, please confirm that the product(s) in question is not manufactured by, contain critical components developed by, or receive substantial political or monetary influence from entities prohibited by Section 889 of the 2019 NDAA.
    ...никакую из перечисленных компаний вы не знаете и денег от них не получали.

    Это просто бюрократы собирают информацию об используемом ими ПО. От вас, кроме этой информации, им ничего не нужно и вам ничего не грозит. Даже если вы получали деньги от указанных организаций, а программу писали на иранской ядерной станции, они просто обязаны будут перестать её использовать, но вам ничего не сделают.
    Просто напишите ответ своими словами, если им что-то будет непонятно - они уточнят.
    Ответ написан
    3 комментария
  • Нужно ли генерировать отдельный бандл для Api в Symfony 5.2?

    myks92
    @myks92
    Нашёл решение — пометь вопрос ответом!
    Зачем вам бандл? Вы что планируете подключать этот код где-то в другом приложении? Бандл это по сути интеграция вашего кода с симфони приложением.

    Создавайте папку Api и туда помещайте. Можно сделать и отдельное приложение. Решать вам.

    Цитата из документации:
    В версиях Symfony до 4.0 было рекомендовано организовать собственный код приложения с помощью пакетов. Это больше не рекомендуется, и пакеты должны использоваться только для совместного использования кода и функций между несколькими приложениями.
    Пакет похож на плагин в другом программном обеспечении, но еще лучше. Основные функции Symfony framework реализуются с помощью пакетов (FrameworkBundle, SecurityBundle, DebugBundle и т. Д.) Они также используются для добавления новых функций в ваше приложение с помощью сторонних пакетов.
    Ответ написан
    Комментировать
  • Существуют ли популярные браузеры не на Chromium?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Firefox
    Ответ написан
    Комментировать
  • Как ограничить очередь на выполнение только 200 задач в час?

    myks92
    @myks92
    Нашёл решение — пометь вопрос ответом!
    Подключите нормальный почтовик без ограничений и не выдумывайте.

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

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

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

    Это всё не целесообразные вещи, в которые даже углубляться не надо. Почтовик без лимитов всё решит.
    Ответ написан
    9 комментариев
  • В каких реальных практических задачах применяются алгоритмы сортировки?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Любые сущности, у которых есть характеристики, которые можно ранжировать по принципу "больше/меньше", "до/после" и т.п.

    Товары в магазине (сортировка по цене, году выпуска, габаритам, весу, срокам поставки)
    Студенты в вузе (сортировка по среднему балу, кол-ву прогулов, уровню IQ, числу хвостов, ФИО)
    Города/страны (сортировка по населению, рождаемости, ВВП, ВВП на душу населения, заболеваемость ковидом, гриппом, раком мозга)
    Астрономические объекты (масса, размеры, плотность, альбедо, параметры орбит)
    Телефонный справочник (не знаю чем вам не нравится этот пример)
    Да все что угодно.

    Берите любые открытые данные (гуглите Public dataset) любого рода и делайте с ними сортировку по любому критерию, который вам нравится.
    Ответ написан
    5 комментариев
  • /deletethis/deletethis?

    @rPman
    Учебные заведения, в основном, это не место где ты получаешь знания, за очень некоторыми исключениями (например ты берешь проект/дипломную и работая со своим куратором изучаешь свою конкретно узкую область), это место:
    * где у тебя есть возможность получить затравку своим знаниям (как затравка для получения кристалла - подвешиваешь крохотную часть в раствор и со временем оно вырастает в огромный кристалл)
    Тут ты учишься учиться. Спросите, зачем мне эти знания что в меня вдалбливают в школе/универе - так вот это тренировка мозга, этот процесс как тренировка мышц выполнением бессмысленных повторяющихся движений и поднятия тяжестей.
    * где у тебя есть возможность получить очень небольшую мотивацию по учебе, логика тут примерно такая - ты уже потратил кучу сил/денег и бросать на середине пути - значит признаться что эти затраты были в пустую
    * главное, у тебя есть возможность встретиться с единомышленниками, людьми, которые как и ты крутятся в этой области знаний
    * и с боку - у тебя есть возможность встретить жену/мужа (если ты женщина), а учебное заведение выступает в качестве фильтра чтобы отсеять совсем уж быдло недостойных внимания (кстати женщины часто это делают, я знаю пример когда одна дама больше 10 лет сверх срока, оплачивала обучение именно с этой целью).
    p.s.
    * университет/институт - неплохое место чтобы найти работу, обычно туда идет работодатель за работниками, очень часто заключаются соответствующие договора с учебным заведением.
    Ответ написан
    2 комментария
  • Как избежать повтора инклюдов в ООП PHP?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Во первых, в современном коде файлы никто не инклюдит - много лет назад для автоматической загрузки классов придумали https://www.php.net/manual/ru/language.oop5.autolo.... И во всём коде сайта остаётся 2-3 include, один из которых - внутри генрируемого composer'ом автозагрузчика.

    Во вторых, все современные фреймворки имеют единственную точку входа: файл index.php, которому передаются все обращения к сайту. В этом файле производятся подключение конфига, и инициализация фреймворка. После чего управление передаётся роутеру, который разбирает URL запроса и передаёт управление нужному классу-контроллеру.

    В третьих, для автоматического создания объектов с автоматической же передачей конструктору нужных данных (в том числе и конфигурации) и исключения дублирования создаваемых объектов давным-давно придумали контейнеры внедрения зависимостей (DI) https://elisdn.ru/blog/116/psr7-framework-container (советую посмотреть все уроки этого цикла).
    Ответ написан
    23 комментария
  • Как профессионально верстать?

    iamd503
    @iamd503
    Верстальщик
    Профессионально верстать - это когда просят что то переделать в вёрстке или переставить блоки, и тебе не нужно всё переделывать, потому что блоки при переносе не изменяются и работают как надо.
    Ну и ещё совет: если тебе не нравится как ты сделал прошлый проект или просто стыдно, что ты так сверстал, то значит ты растёшь как профессионал
    Ответ написан
    Комментировать
  • Нормально ли сделал тестовое задание на PHP (числа Фибоначчи)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Неверно.
    $inputNumbers = [3279, 920, 4181, 8, 1, 4360, 407, 9950, 2098, 8579, 4914, 7204, 8875];
    $max = max($inputNumbers);
    $fib = [];
    $f1 = 0;
    $f2 = 1;
    do {
      $fN = $f1 + $f2;
      $f1 = $f2;
      $f2 = $fN;
      $fib[] = $fN;
    } while ($fN < $max);
    $sum = array_sum(array_intersect($inputNumbers, $fib));
    print $sum;
    Ответ написан
    1 комментарий
  • Нормально ли сделал тестовое задание на PHP (числа Фибоначчи)?

    Stalker_RED
    @Stalker_RED
    А если во входящих данных будет число на несколько тысяч знаков длинной, то ваш скрипт по таймауту отвалится, по переполнению памяти, или за пару лет справится с задачей подсчета всех промежуточных чисел?

    // немного кода из википедии
    
    // A utility function that 
    // returns true if x is  
    // perfect square 
    function isPerfectSquare($x) 
    { 
        $s = (int)(sqrt($x)); 
        return ($s * $s == $x); 
    } 
      
    // Returns true if n is a 
    // Fibinacci Number, else false 
    function isFibonacci($n) 
    { 
        // n is Fibinacci if one of  
        // 5*n*n + 4 or 5*n*n - 4 or  
        // both is a perferct square 
        return isPerfectSquare(5 * $n * $n + 4) ||  
               isPerfectSquare(5 * $n * $n - 4); 
    }


    Осталось перебрать и сложить.
    $sum = array_reduce($input, function($acc, $n) {
    	return isFibonacci($n) ? $acc + $n : $acc;
    }, 0);
    Ответ написан
    3 комментария
  • Как сгенерировать 400 000 000 страниц?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Не с той стороны подходите. Вместо 400 000 000 страниц можно сделать 1! Сделать api, пользователь заходит на страницу, выбирает 2 города и страничка обращается к api, оно возвращает нужные данные на эту страничку. Ну это так, в 2-х словах.
    Ответ написан
    12 комментариев
  • Symfony - Как изменить форму Бандла?

    BoShurik
    @BoShurik Куратор тега Symfony
    Symfony developer
    Можно использовать Form Type Extension

    use Symfony\Component\Form\AbstractTypeExtension;
    use Symfony\Component\Form\FormBuilderInterface;
    
    class BundleFormTypeExtension extends AbstractTypeExtension
    {
        public static function getExtendedTypes(): iterable
        {
            return [BundleFormType::class];
        }
    
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder->remove('someField');
        }
    }
    Ответ написан
    Комментировать
  • Влияет ли наличие DKIM подписи в сообщениях на их доставляемость?

    Да, влияет и иногда достаточно сильно, причем даже если домен DKIM-подписи не совпадает с доменом отправителя, но не всегда положительно. В целом, письма с DKIM доставляется значительно лучше, чем письма без DKIM. Но отрицательная репутация домена, который подписывает письма (например плохой рассыльщик с большим потоком спама) может отрицательно влиять на доставляемость подписаных им писем.
    Ответ написан
    Комментировать
  • Как снизить зависимость от разработчиков?

    Xuxicheta
    @Xuxicheta
    инженер
    1. Требуйте хорошего покрытия тестами. Вы получите инструмент для проверки работоспособности, более надежный код и более понятный. Потому что хорошо написанный код проще тестировать, и разработчикам придется писать внятно.
    2. Наймите хотя бы одного хорошего профессионала, чтобы он следил за всеми. Дешевые разработчики, если дать им волю, справляются с задачей, но пишут неподдерживаемый код.

    Из этих пунктов следует один вывод. Хорошо это всегда дорого, по другому не бывает.

    CMS или фреймворк без разницы, при глубокой кастомизации CMS будет использована как фреймворк так же. И лучше бы это была хорошо спроектированная CMS.
    Ответ написан
    2 комментария
  • Зачем интерфейсы если есть трэйты?

    AleksandrB
    @AleksandrB
    Совсем недавно вывел "Hello world"
    Зачем нужны машины, если есть трамваи?

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

    Макет класса, в свою очередь, можно принимать в параметры методов и сам макет предназначен что бы изолировать часть класса и не создавать лишних зависимостей. Зависимость на Абстракциях. Нет зависимости на что-то конкретное.

    Представь, у тебя есть класс А с методами M1 и M2, с которым работают 3 других класса. Первый класс использует только метод M1, второй только метод М2, третий M1 и M2. Если ты просто передашь им в параметры класс А, то первые 2 класса будут зависеть от методов которые они не используют. Какой выход? Создай 3 интерфейса - для каждого класса и передавай их. Тогда классы использующие класс А не будут зависеть от того что не используют.
    Ответ написан
    2 комментария