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

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    В коде вообще не должно быть подобного содержимого
    В ларавел это решается выносом строковых литералов в файлы перевода

    throw new Exception(__('messages.order_failed'));

    // messages.php:
    return [
        'order_failed' => 'любое количество текста',
    ]


    Наверняка в Yii тоже есть подобный механизм.

    UPD
    Упс, не дочитал. А всё из-за ваших скриншотов, отвлекли


    Используется фреймворк: Yii2. В нём есть средства интернационализации, и используя их можно вставлять идентификатор текста, вместо самого текста: Yii:t('PROVIDER_CANCEL_ERROR'), но всё же он не для таких целей предназначен.


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

    Sanes
    @Sanes
    Любая Ticket система или CRM
    Начните отсюда.
    Ответ написан
    Комментировать
  • Как вычислить виновника из-за которого отваливается интернет с какой-то периодичностью в маленькой сети?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Такого рода проблемы все и всегда решаются однотипно.
    1. Необходимо сформулировать критерии наличия проблемы.
    Как именно пропадает интернет, насколько часто, как надолго. Это нужно для диагностики. поиска причины и определения ушла ли проблема после принятия каких либо мер.
    2. Делить проблему на части и проверять части по отдельности.
    Самый эффективный способ делить - это пополам. Отсекаем часть сети и проверяем наличие проблемы в обеих частях (если есть возможность) или в одной из частей.
    3. Когда найден минимальный проблемный участок, который уже нельзя или бессмысленно делить - заменяем его.
    4. Помним, что чаще всего сложные проблемы - это композиция нескольких более простых. которые по отдельности могут не проявляться. В вашем случае может быть проблема, связанная с нагрузкой на роутер, например, которую создает один из услов из-за плохого контакта обжима и большого объёма биттых пакетов. Устранив одну из причин, вы, может быть, сделаете проявления проблемы реже, но не устраните её полностью. К примеру, если замените ротуер, битые пакеты будут всё равно будут нагружать вашу сеть и портить ее производительность, но это будет не так очевидно. Переобжав коннектор вы избавитесь от части нагрузки, но еслив ваш ротуер работал на переделе, то лишний вафай-клиент или тяжелый видос в сети сможет его снова нагрузить до критического снижения производительности.

    Итак, пробежимся по перечисленным пунктам сначала.
    1. Критерии. Поиск критериев - это часть решения. Обычно в этом случае нуно сорать необходимую статистику. Есть куча софта, который это умеет делать, но пинг есть всегда под рукой.
    Для этой тулзы есть две полезных опции: ключ для бесконечного пинга и размер пакета.
    В разных ОС эти ключи немного разные, поэтому ищите их отдельно, у меня нет винды под рукой, поэтому не стану на этом заострять.
    Скаж лишь, что пинговать лучше большими пакетами, жалетально превышающими размер TTL, прописанный в роутере. Тогда такой пинг будет реже проскакивать в периоды хорошей связи, то есть выловит больше пролблем.
    Пинговать нужно в отдельных окнах сразу несколько хостов:
    - ya.ru - этот хост всегда отвечает на пинги и выявит проблемы с DNS
    - 8.8.8.8 - это гугловый DNS-сервер, тоже всегда отвечает на пинги, покажет, что связь с инетом есть даже если DNS, прописанныйна компе не правильно работает.
    - 192.168.0.1 - или какой там IP у вашего роутера. Нужно. чтбы отделить проблемы с инетом от проблем с внутренней связностью до роутера
    - 192.168.0.x - ip одного из компов в сети. Я обычно пингую несколько компов, доступных через баксимальное число потенциально проблемных узлов - ethernet-розеток, свичей, вайфай-соединений... Этот пинг поможет понять где проблема, во внутрисетевой связности или в последней миле.

    Учтите, что проблемы часто бывают комбинированные и каждое сочетание симптомов будет свидетельствовать о раных проблемах.
    Да, тревожным принаком может служить не только пропадание пакетов, но и скачки в длительности их возврата, особенно если такие длительности достигают 500мс и выше. Но и скачки от 3мс до 250мс тоже будут свидетельствовать о каких-то проблемах.

    Запускать пинг на всех компах лучше одновременно и на некоторое время. Например минут на 20. Потом по статистике будет видно сколько где пакетов пропало.

    2. Если критерии наличия проблемы позволяют, то можно попробовать отрубать части сети и смотреть наличие проблемы. Это я в том смысле, что если проблема происходит в среднем раз в пару-тройку часов, то отрубать на многие часы части сети при диагностикем ожет быть неприемлемым.
    Редкеи пробемы дольше отлавливать. Но напоминаю, что критерии можно детализировать, ведь если пакеты у вас пропадат относительно редко, то скачки времени их возврата могут случаться чаще и подсвечивать проблему. Также можно сделать рамер пакета близким к максимальному, это должно тоже в некоторых случаях участить проявление проблемы.
    Иногда не мешает нагрузить сеть комированием по локалке большого файла. В линуксе можнно с помощью утилиты tc послать большой поток рандомных байт на любой сокет..
    3. Плавающие проблемы случаются из-за плохого обжима, перебитого жверью кабеля, перегрызенного UTP в плинтусе, из-за умиращих конденсаторов в блоке питания роутера (БП может не выдавать необходимого при нагрузках тока, но вольтметром такая неисправность не будет различима без нагрузки). Вообще старые (да и не только) роутеры могут страдать поплывшими электролитическими конденсаторами не только в блоках питания.
    Хорошо, когда можно подменить роутер.
    4. ну с четвертым пунктом ничего не пососветуешь, только разделать и тестировать все по отедльности и в разных сочетания и да поможет нам ктулху.

    А для тех, кто дочитал этот опус до конйа - интересная задачка. Что пингуют эти команды, как и почему?
    ping 1.1
    ping 2130706433

    Тех, кто знает, попрошу не спойлерить=)
    Пусть для кого-то будет сюрпризом этот дивный мир=)

    UPD. Простите за адское количество опечаток в тексте. Писал в спешке и с непривычной клавиатуры. Исправлю всё попозже. Не ожидал, что многим ответ придётся по душе. Вроде ж накапитанил как мог.
    Ответ написан
    5 комментариев
  • Как из 1 инпута сделать сабмит и загрузку файла?

    delphinpro
    @delphinpro Куратор тега HTML
    frontend developer
    <form action= …>
        <input name="fileskin" type="file" onchange="this.form.submit()">
    </form>
    Ответ написан
    Комментировать
  • Бизнес по доставке еды. Информационная составляющая. С чего начать?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    1. регистрируете ИП
    2. создаете сайт пусть на C# NET6
    2.1 авторизация через соц. сети + локальная
    2.2 для поисковиков Razor pages и или https://yandex.ru/dev/turbo/
    2.3 админка на минималках
    2.4 апи отображения, используются как в мобильном приложении так и в контроллерах
    2.5 оплата через яндекс пай
    2.6 подключаете jivo для быстрой связи на сайте
    2.7 апи для связи с бухгалтерией
    2.8 рабочее место оператора (создание заказа, обработка заказов)

    3. мобильное приложение
    3.1 авторизация через апи 2.1
    3.2 проверка статуса, история, горячие предложения
    3.3 интерфейс оператора, просмотр заказов, изменения статуса
    3.4 интерфейс пекаря просмотр заказов изменение статуса, каждое изменение статуса отправляет уведомление всем учавствующим в цепочке.
    3.5 интерфейс курьера
    Ответ написан
    5 комментариев
  • Почему скрипт PHP PDO не хочет получать данные из базы?

    @rPman
    Есть ли в базе данные по условию?data = :data AND ref_id = 10215.
    В data хранятся данные в формате?date("d-m-Y");.
    По коду если запрос вернет пустой результат у тебя должна быть ошибка (варнинг в логах веб сервера или консоли где выполняется код), так как $depref1 не определен.
    и т.п.
    Ответ написан
    5 комментариев
  • Какую альтернативу взять место MongoDB?

    vabka
    @vabka
    Токсичный шарпист

    а её заблокировали в России

    Только облачный Mongodb Atlas.

    А развернуть свой экземпляр можно без каких-либо проблем.
    Если хочется облако - можно взять dbaas у какого-нибудь провайдера.

    MySQL радикально отличается от mongodb как языком запросов, так и парадигмой.
    GraphQL - вообще даже не база данных, а только лишь протокол
    Ответ написан
    Комментировать
  • Chrome не посылает cookie с разрешенным CORS?

    OCTAGRAM
    @OCTAGRAM
    На первом снимке куки из таблицы принадлежат домену localhost, а междоменный запрос отправляется на узел что-то-там.cyclic.app. С этим запросом могут быть отправлены только куки от родного домена что-то-там.cyclic.app или наддомена (.cyclic.app)
    Ответ написан
    8 комментариев
  • Существует такое понятие, как "Ассоциативный список"?

    @igor6130
    Ну оно так и называется: ассоциативный массив, словарь, объект или даже карта.
    Ответ написан
    Комментировать
  • Есть ли смысл в 2023 году учиться вёрстке?

    Sanes
    @Sanes
    Это неразрывные технологии. Одно без другого не может существовать в настоящее время.
    Ответ написан
    3 комментария
  • Является ли чтение Readonly свойств объекта нарушением инкапсуляции?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Давайте представим объект и DTO которым пользуется объект. Если объект возаращает DTO как представление самого себя, например методом showStruct(): DTO будет ли это являться нарушением инкапсуляции?

    Я понял ваш вопрос. Смотрите. Философия ООП базируется на том что все действия с объектом должны быть санционированы языком или средой выполнения. Например в Java есть техника рефлексии которая позволяет много чего делать например менять приватные поля. Это часто используется в Mock/Mockito и я часто про это говорю. Мокито - фактически взламывает инкапсуляцию. Но это всех устраивает потому-что "тестить нуна!".
    В Java также есть технология сериализации-десериализации которая обеспечивает сохранения состояния объектов на диск или передачу их в сеть для дальнейшей работы (например пользовательская сессия прыгает между нодами кластера). И это действие (сериализация) полностью санкционировано средой и языком. Всех это устраивает. Хотя с моей точки зрения - этож капец взлом. Но зато в Java вы никогда не сделаете down-casting объекта одного типа к типу другого если иерархия этого не позволяет. Этого делать нельзя ... ну потому что это точняк нарушение ООП. И нельзя найти никакой санкции на такое странное действие. Вот в языке С++ например вы можете жонглируя указателями взглянуть в любую память своего процесса или потока и прочитать любой байт или word/dword. Что можно сделать в PHP из подобного? Я не знаю. Но новерное что в PHP много механик которые не позволяют делать хакинг когда. Вот. Поэтому ООП и считается философией программирования а вовсе не тюрьмой. Вобщем код надо писать по правилам языка и среды а не "хачить". И лучшие практики ООП они как раз стоят именно на этой идее. Кроме того - не существует единого ООП - а есть просто разные его реализации в разных языках. Короче вы не найдете самого-самого-ООП-шного языка.

    А вообще если это опнсорц - ну сделайте себе форк и меняйте что хотите в исходниках.

    И Еще пример. если объект не будет возвращать никаких данных о себе, то тогда как придерживаться принципа OpenClosed?

    Про что вообще OpenClosed? Это - расширенная трактовка ООП в части SOLID (вторая буква О).
    Означает что если вы хотите внести изменение в класс - то вы его наследуете. Например
    class BMWX5 extends BMW { .. }
    Мы ничего не нарушили. Мы не меняли свойств BMW. Мы создали новый класс BMWX5 где есть изменные методы. Оригинальный BMW мы не трогали. Все - в правовом поле.
    Ответ написан
    6 комментариев
  • Является ли чтение Readonly свойств объекта нарушением инкапсуляции?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    dto являются легчайшими объектами взаимодействия с бд, они просто по своей сути не могут содержать в себе логики, вся логика выше
    Ответ написан
    Комментировать
  • Насколько сложно устроиться во Frontend начинающему в 2023?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Как уже и ответили так же как в 2022, 2021, 2020, 2019 ...
    По своему опыту отвечу что большинство моих успешных коллег уже на 2-3 курсе работали по профильной специальности, кто в университете на кафедре, что давало нехилый буст при сдаче предметов, кто в серьезных фирмах.

    В общем рассылайте резюме, ходите по конференциям их многие фирмы устраивают в институтах или университетах.
    Ответ написан
  • Чем можно сгенерировать множество pdf?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Puppeteer (кукловод на англ.)

    запустить «безголовый» браузер Chromium, который отрендерит страницу с данными. И забрать её в PDF.

    Пример сохранения страницы сайта в PDF.
    Ответ написан
    Комментировать
  • Как искать зашифрованные данные через like?

    Если верно понял требования, то вот мои мысли.

    Использовать Transparent Data Encryption (TDE)

    Выполнить шифрование данных на уровне таблиц:
    https://www.postgresql.org/docs/current/encryption...
    https://dev.mysql.com/blog-archive/controlling-tab...

    То есть расшифровывание будет происходить на уровне СУБД, а с точки зрения приложения - обычные запросы LIKE.
    Ответ написан
    1 комментарий
  • Почему игнорируется условие if?

    @YK21
    разберитесь с областью действия переменных

    в каждой ветке условия у Вас своя переменная step
    Ответ написан
    1 комментарий
  • Почему игнорируется условие if?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    1. Если что-то не работает как задумано, первое что нужно сделать это открыть инструменты разработчика на вкладке console и посмотреть нет ли там никаких ошибок. Если есть то загуглить их и посмотреть где они возникают. Попытаться осознать и исправить. А ещё лучше научиться отладке собственного кода https://learn.javascript.ru/debugging-chrome
    2. Перед тем как пользоваться тем или иным способом объявления переменных (var\let\const) стоит почитать про него и ознакомиться с нюансами.
    https://medium.com/nuances-of-programming/%D0%B2-%...

    А именно:
    if (parseInt(number.innerHTML) == 0){
      let step = 3;
      } else {
      let step = parseInt(number.innerHTML) - 1;
      }

    Переменной step не существует вне фигурных скобок, соответственно, ниже, где Вы пытаетесь засунуть step как innerHTML - возникает ошибка, что step не определена.
    Ответ написан
    2 комментария
  • Почему join еще одной таблицы изменяет мой count?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    JOIN - это декартово произведение таблиц. При отсутствии фильтра ON число строк результата JOIN'а будет равняться произведению числа строк таблиц, входящих в JOIN.
    В вашем случае, если в users_groups_link есть несколько строк с одним group_id, то в результате JOIN'а для каждой из них будет создана отдельная строка результата.
    Побороть можно, например, используя count(DISTINCT sl.salon_id).
    Ответ написан
    1 комментарий
  • Пропадают данные при записи в JSON файл?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Внимательно оттестировать весь код и найти ошибку.
    Либо перейти от файла к нормальной базе данных.
    Ответ написан
    Комментировать
  • Как вернуть первоначальное значение переменной при повторном выполнении функции?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    можно стилями обрезать:
    .truncate {
      width: 250px; /* подставьте вашу ширину блока */
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    }


    Комментарии по коду в вопросе:
    • метод строки link() — устаревший и не рекомендуется к использованию.
    • метод slice() есть и у строки, т.ч. не обязательно преобразовывать строку в массив и обратно.
    • вместо строки '...' можно использовать HTML-символ &hellip; (троеточие одним символом)
    • ; в конце строк кода лучше не пропускать
    Ответ написан
    1 комментарий