Задать вопрос
  • Как вывести текст в textarea не потеряв переносы строк в тексте?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    ВАРИАНТ 4-Й, очевидный
    1 - пишу абзац текста с переносами в textarea
    2 - Отправляю в SQL-базу ничего не меняя.
    3 - Оригинальные системные переносы сохраняются в SQL - базе, как и должны, поскольку любые заморочки с яваскриптами к базе данных не имеют вообще никакого, ни малейшего отношения
    4 - Читаю из SQL базы
    5 - Вывожу в обратно в texarea
    6 - В texarea ВСЁ РАБОТАЕТ! A magic! При том что мы вообще нигде ничего ни на что не меняли

    6a - По поводу HTML сущностей. Хотя в приведённом примере нет ни одного символа, который бы требовал перекодирования в HTML-сущности, тем не менее, при выводе любого текста в HTML, эти сущности действительно должны быть перекодированы в обязательном порядке, всегда, в 100% случаев. Причем с помощью не какой-то левой addslashes, а функции, которая действительно это делает, htmlspecialchars($var_zametka)

    7 - Собираюсь с мыслями, и напряжённо думаю - в каком месте у меня текст взаимодействует с яваскриптом? Который к выводу текста в текстарию не имеет ни малейшего отношения?
    8 - думаю...
    9 - думаю...
    10 - наконец-то нахожу.
    11 - перед тем, как отправлять текст в яваскрипт, кодируем его тем методом, который специально предназначен для отправки данных в яваскрипт, а не какими-то шаманскими заклинаниями и плясками с бубном.echo json_encode($var_zametka)
    12 - ВСЁ РАБОТАЕТ! Просто потому, что получилось расхлебать кашу в голове, в которой SQL путается с РНР, HTML c яваскриптом, а экранирование спецсимволов почему-то называется заменой на HTML-сущности. Хотя если открыть документацию на абсолютно бесполезную функцию addslashes, то там ни одного разочка слово HTML не встретится.
    Ответ написан
  • Как лучше хранить статичные настройки в MODX?

    alelunegov
    @alelunegov
    Фрилансер. Разработка сайтов на MODX, верстка
    Для этого есть замечательное дополнение ClientConfig, данные редактируются на отдельной странице в админке, а в шаблоне вывод как у системных настроек.
    Ответ написан
    Комментировать
  • Можно ли удалить последний параграф из строки mysql?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Вообще возможно такое?

    Если текст весь разбит на параграфы, и последними строками всегда будет </p> тогда возможно через REGEXP_REPLACE. С некоторыми извращениями скорее всего можно и если не закрывающий тег в конце текста.
    Ответ написан
    2 комментария
  • Для чего в проектах принудительно используют use?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Часть проблем высосана из пальца, как очень смешной п.2 - разница в одну точку с запятой, а уже "гораздо длиннее", карл. При том что если класс использовать в коде хотя бы дважды, то вот тут как раз действительно получится "гораздо длинее"

    use \Framework\Main\UI\Extension;
    Extension::load([ 'vendor.module.components.cabinet.personal' ]);
    Extension::unload([ 'vendor.module.components.cabinet.personal' ]);
    vs
    \Framework\Main\UI\Extension\Extension::load([ 'vendor.module.components.cabinet.personal' ]);
    \Framework\Main\UI\Extension\Extension::unload([ 'vendor.module.components.cabinet.personal' ]);

    и будешь постоянно спотыкаться в коде об эти палочки.

    А часть решается не просто, а очень просто: вместо того, чтобы писать код в Блокноте Виндоус, надо в кои-то веки освоить работу с нормальной IDE. Которая
    - автоматом скрывает блок use
    - по ctrl+наведение курсора показывает полный путь, а по ctrl-click сразу переходит в определение метода
    - подсвечивает неиспользуемые неймспейсы, и не проблема их удалить
    Ответ написан
  • Для чего в проектах принудительно используют use?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Минусы как бы очевидны:
    нет, не очевидны, по крайней мере миллионам разрабов

    1 Код становится трудно читаем. По месту использования не всегда понятно что имеется ввиду под Order::load() - \Framework\Sale\Order::load или \Vendor\Project\Sale\Order::load - приходится проматывать к верху файла.
    Вам как разрабу должно быть в принципе фиолетово, какой из пакетов используется, если они соблюдают один интерфейс. Если не соблюдают, при том что называются одинаково, значит все пошло не так задолго до проблем с определением пакета...

    2 Код становиться длиннее - там где было бы просто:
    \Framework\Main\UI\Extension::load([ 'vendor.module.components.cabinet.personal' ]);
    приходится писать:
    use \Framework\Main\UI\Extension;
    Extension::load([ 'vendor.module.components.cabinet.personal' ]);
    Код становится длиннее в проектах где 2 контроллера и в них по 1 экшену. Там где Extension::load будет вызываться больше одного раза, очевидно экономия на эксплуатации клавиатуры заметно увеличивается. А в больших проектах создание объекта может (и будет) повторяться многократно.

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

    И хрен его знает используются импортированные классы ниже ещё или уже нет, ведь никто не убирает этот мусор.
    Хрен не знает, а ИДЕ замечательно знает и даже подсвечивает серым цветом неиспользуемые.
    Ответ написан
    4 комментария
  • Как вернуть результат промиса в переменную?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ответ написан
    Комментировать
  • Почему при использовании reduce все элементы массива не складываются?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вы заносите в массив не числа, а массивы. Вместо [1, 2, 3, ...] вы получаете [[1], [2], [3], ...].
    Ответ написан
    1 комментарий
  • Как добавить знак валют при вводе значения в input?

    xEpozZ
    @xEpozZ
    Веб-разработчик
    Зачем его вставлять в input?
    Сделайте отдельный span/i/div/что хотите и состыкуйте его к input. И данные в контроле будут чистыми, и никаких проблем с перескакиванием курсора за символ.
    Ответ написан
    1 комментарий
  • Какой-то скрипт или расширение подменяет или добавляет в код веб-приложения слова, что это может быть?

    @Fisher21 Автор вопроса
    Коллеги, всем спасибо за участие, все оказалось прозаичнее - баловались расширения для перевода страниц, причем и гугл и яндекс. Отключив расширение, проблема сразу пропадала.

    В качестве бонуса, прилагаю еще один пример такого перевода, сотрудники не могли до конца пройти тест и рабочий день был сорван из-за таких вот замен, в оригинале должно быть "вести учет микротравм"

    62df8c40c9101951269103.png
    Ответ написан
    2 комментария
  • Какие есть api, для получения информации с какими странами граничит страна, которую выбрал пользователь?

    EreminD
    @EreminD
    Кое-что умею
    https://restcountries.com/#api-endpoints-v2-all

    Пример
    https://restcountries.com/v2/name/andorra

    [{
        "name": "Andorra",
        "topLevelDomain": [".ad"],
        "alpha2Code": "AD",
        "alpha3Code": "AND",
        "callingCodes": ["376"],
    ...
        "borders": ["FRA", "ESP"], // коды стран
        "nativeName": "Andorra",
    ...
    }]
    Ответ написан
    6 комментариев
  • Как реализовать пользователей для админки?

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

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Вы ведь сами понимаете, что это ваш косяк, а не заказчика? А чего ему за него платить?

    Мне прям вспомнилась ситуация, когда я пришёл к стоматологу вылечить кариес (пусть будет 2 000 рублей), мне рассверлили весь зуб и заявляют "батюшки, да тут же пульпит!" (12 000 рублей).
    Помогите Маше найти фразу для стоматолога, которая позволила бы сохранить хорошие отношения.

    И вот вы сейчас, по прошествии 2 месяцев, оставите заказчика один на один с незавершённым проектом, в котором никто не разберётся (то есть по сути ни с чем) - то вы поступаете как чудак. Я же вижу по тексту, что понимаете.
    А сюда вы за индульгенцией пришли? :)

    Хотите "сохранить отношения" - доделывайте как есть, в будущем будете мудрее.

    Если совсем невмоготу - возвращаете оплату целиком и сильно извиняетесь (можно даже сверху накинуть).
    В таком случае о хороших отношениях говорить не приходится, но послевкусие хотя бы как от порядочного человека.

    Два совета на будущее:
    1) Перезакладывать стоимость и время разработки;
    2) Если понимаешь, что всё идёт не по плану/пропал интерес / слишком сложно / некомфортно / whatever - сказать об этом сразу и отказаться от проекта, так всегда получается честнее

    Опыт всегда стоит дорого, а 53 000 рублей - ну не самая большая цена его получения :)
    Ответ написан
    8 комментариев
  • В чем проблема с нахождением елемента формы в post?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых
    require_once 'controllers/authController.php';
    require 'templates/header.php';
    здесь отсутствует закрывающий тег пхп, после которого идет хтмл. Подозреваю что там и открывающего нет (в коде вы его не привели).
    Во вторых button type="sumbit" не является инпутом, и передаваться как значение пост не будет.
    В третьих в форме указан signup.php, а выше вы приводите "файл auth". Определитесь, или там переименуйте или тут.

    Ну и первое что нужно сделать - включить вывод ошибок, или смотреть логи, а не тыкать пальцем в небо.
    ini_set('error_reporting',E_ALL);
    ini_set('display_errors', 1);
    session_start();
    ...
    Ответ написан
    3 комментария
  • Почтовые серверы с регистрацией без телефона?

    CityCat4
    @CityCat4 Куратор тега Электронная почта
    //COPY01 EXEC PGM=IEBGENER
    protonmail?

    Пользовался достаточно давно, и это был единственный найденный мной сервис без запроса телефона.
    Ответ написан
    4 комментария
  • Как сделать музыку на сайте так же как в вк?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Создаю свой мессенджер, задача такова что нужно сделать список абсолютно всех мелодий которые есть в мире, так же как в вк, как это можно реализовать?
    Так, давайте прикинем что нам нужно для реализации. Программная часть собственно нас не сильно интересует, так как на фоне прочих затрат найм какого-нибудь Линуса Торвальдса на пару месяцев вообще теряется в общей сумме.

    1) Хранилище. По примерным оценкам в мире в цифровом виде около 500 000 000 оригинальных музыкальных композиций. Учитывая ремиксы и каверы - можно смело брать миллиард. Средний вес композиции среднего качества - 5 Мб. То есть порядка 5 петабайт, если хранить не в лучшем качестве. Учитывая что это должно иметь какое-то резервное хранение (у нас тут серьезный сервис все-таки), умножаем на 2 (10 петабайт). При стоимости около 2 центов за гиг в месяц, 10 000 000 Гб * $0,02 = $200 000 в месяц хранение. Ну, бюджетненько в целом.

    2) БД, которая хранит данные обо всех этих композициях. Стоимость хранения будет поменьше, но думаю к 20-50К все равно где-то выйдет.

    3) Другой вопрос - где брать эти данные, так как не все музыкальные файлы содержат полное описание композиции. На перебор 1 миллиарда записей и сортировки их по жанрам, альбомам, исполнителям, дате выпуска и т.д. уйдет некоторое время. Допустим 50% композиций будут иметь нормальное описание, остается все те же 500 миллионов композиций на обработку. Пусть на каждую понадобится 2 минуты работы, внести данные в поля (хотя их еще как-то найти надо, но допустим), тогда получим 1 миллиард минут. Это 1900 лет работы, или 16 666 667 часов. Час работы самого дешевого индуса - 3 бакса/час. 16 миллионов * 3 - давайте округлим до 45 миллионов. Даже если сократить этот пункт в 10 раз - выйдет под 4 миллиона. Рабский труд сегодня дорог как никогда...

    4) Теперь платформа которая будет всем этим ворочать, так как у нас в сервисе должны же какие-то пользователи завестись вроде. Ну, на сервера можно смело отложить небольшую сумму, тоже где-то 20-30К, для начала сойдет.

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

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

    По итогу на год:
    $200 000 * 12 = $2 400 000 хранилище
    $20 000 * 12 = $240 000 бд
    $20 000 * 12 = $240 000 сервера приложения
    $4 000 000 работы
    Итого: чуть меньше 7 миллионов баксов.
    Ответ написан
    2 комментария
  • Как скопировать логотип с сайта?

    sslion
    @sslion
    Это анимация lottie, соответственно нужен сам плеер lottie, svg, json файл, в котором описана анимация...
    В общем читай про анимации LOTTIE
    Ответ написан
    5 комментариев
  • Как верстаются блоки со сложным вырезом?

    RAX7
    @RAX7
    на SVG вырез можно сделать хоть в форме котенка
    Ответ написан
    4 комментария
  • Как верстать изогнутые секции?

    RAX7
    @RAX7
    SVG + 2 маски, одна пропорционально растягивается, другая непропорционально. Отрицательным margin загнать секции одна на другую.
    Ответ написан
    6 комментариев
  • Как сделать адаптацию зума html?

    Anopeng
    @Anopeng
    Веб-программист, учу фронт и бек
    Мда... Такого я давно не видел) Конечно, будет съезжать
    top: 44%;
    left: 41%;
    ...и т.д.

    Это костыль явных новичков. Потому что нужно знать, что твой экран - это не экран других и пропорции могут отличаться. Тут нужно полностью переписывать этот отрывок CSS, чтобы исправить. Скинь разметку HTML, помогу
    Ответ написан
    3 комментария