• Как сайту на кириллическом домене отправлять почту?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Ищется хорошее решение для сайта, который использует один кириллический домен

    Задача не имеет решения. Или вернее скажем так - имеет весьма негарантированно рабочее решение.

    То есть:
    zadnica@задница.ру - возможно, работать будет (если правильно будет переводиться в punycode)
    задница@задница.ру - работать не будет

    У маркетологов и так постоянная проблема - почему их спам не доходит (потому что антиспам постоянно совершенствуется). А Вы им еще искуственные барьеры ставите.
    Ответ написан
    1 комментарий
  • Новый ПК, намертво зависает при любой нагрузке. В чём проблема?

    Adler_lug
    @Adler_lug
    БП очень врядли, особенно учитывая, что на мемтесте проблемы. В этот момент видеокарта почти не используется и почти ничего не потребляет.
    Я бы смотрел в сторону памяти, особенно учитывая, что это Corsair (много негатива за них слышал). Может битая, а может какие-то настройки частоты, вольтажа, профиля XMP или разгона не подходят.
    Ответ написан
    6 комментариев
  • Новый ПК, намертво зависает при любой нагрузке. В чём проблема?

    @rPman
    Мемтест тоже не проходит, пару минут и зависает.
    вот этот момент говорит что не обязательно проблемы с охлаждением

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

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

    так же нельзя исключать проблемы с материнкой или блока питания, правильное выявление сбойного компонента это буквально тестирование по отдельности своих компонентов в заведомо рабочем конфиге
    Ответ написан
    1 комментарий
  • Есть источник данных выходных и рабочих дней, по API или другим удобным способом?

    @vitaliy914
    как вариант можно прикрутить https://www.isdayoff.ru/
    Ответ написан
    Комментировать
  • Как разбирать код чужого сайта?

    mayton2019
    @mayton2019
    Bigdata Engineer
    react, JQuery - это известные фреймворки. Их код разбирать не надо. Надо просто знать как они работают.
    Они документированы и очень хорошо описаны в литературе. И очень сомнительно что вы, глядя в код фреймворка поймете как он работает. Такого уровня обратный инжинеринг вам совсем не нужен. И не продуктивен. Просидите долгие годы.

    А вот изучать надо бизнес-код самого сайта. Изучать можно по разному. Верно говорят в топике выше - надо ставить брейкпоинты и смотреть как чего работает. А еще лучше - понять как фронт взаимодействует с бэком. Хороший вариант - нарисовать для себя модель наподобие Swagger/GraphQL где описать все методы и примеры аргументов.
    Ответ написан
    Комментировать
  • Что конкретно делает эта функция mysqli_real_escape_string()?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Это хороший вопрос, в первую очередь потому что найти человека, который знает правильный ответ, практически нереально. Опроси 10 похапешников, 10 из них тебе наплетут ереси, которая не имеет с реальностью ничего общего. Любой, кто заикнется про SQL инъекции, уже облажался.

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

    Как ты, наверное, уже знаешь, строки в SQL берутся в кавычки:
    SELECT * FROM table WHERE name='vasya'
    Вот чтобы vasya не приняли за имя таблицы или ключевое слово, его берут в кавычки. Очень просто. Но иногда у человека имя не просто вася. Что будет вот с таким запросом?
    SELECT * FROM table WHERE name='Я Д'Артаньян, а все вокруг ...'

    Мясорубка будет. БД решит, что имя - это 'Я Д', а дальше какая-то фигня, которую она не понимает. И выдаст ошибку.
    Поэтому кавычки надо экранировать.
    SELECT * FROM table WHERE name='Я Д\'Артаньян, а все ...'

    никаких ошибок не выдаст.
    Вот mysqli_real_escape_string() как раз этим и занимается - экранирует кавычку слешем, а заодно и сам слеш, потому что если слеш окажется в конце строки,
    SELECT * FROM table WHERE text='Мну сегодня в любви вкладкой ошиблись :\'

    то БД решит, что последняя кавычка экранирована, и строка не заканчивается. Снова мясорубка.
    Также mysqli_real_escape_string() экранирует еще несколько символов, но уже из чисто эстетических соображений.

    Еще одна функция этой функции - принимать в расчет кодировку текста. Есть кодировки, в которых слеш - это не слеш, а часть другого символа. И когда БД будет парсить запрос, она не поймет, что это слеш, а решит что это просто буква. И снова мясорубка.
    Поэтому перед использованием mysqli_real_escape_string() надо сказать БД, в какой кодировке у нас данные, с помощью функции mysqli_set_charset().

    Но читатель уж сучит ножками в нетерпении - а что же SQL инъекции, о которых так долго говорили большевики? Не может же быть, чтобы они были совсем не при чем. Окей, в качестве побочного эффекта, строка, в которой экранированы спецсимволы (слеш и кавычка), не пропустит инъекцию. Но здесь следует понимать две вещи:

    1. Строки надо форматировать в любом случае, независимо от того, ждем мы инъекцию, или нет. Мясорубка нам точно так же не нужна.
    2. Строками синтаксис SQL запросов не исчерпывается. Есть числовые литералы, есть имена полей. Для всех них mysqli_real_escape_string() бесполезна чуть более чем полностью.

    То есть, отсюда можно сделать вывод, что нельзя использовать mysqli_real_escape_string() для защиты от инъекций. Она предназначена для другого. Вот для этого другого, для форматирования строк, ее использовать можно. Но не нужно.

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

    В принципе, mysqli умеет так делать, но не так удобно как PDO. Поэтому при возможности вместо нее лучше использовать PDO:
    $stmt = $pdo->prepare("SELECT * FROM table WHERE name=? or name=?")
    $stmt->execute(["Vasya", "Д'Артаньян"]);
    $rows = $stmt->fetchAll();
    - и получить, в итоге, готовый массив с данными, которые вернула БД.
    Если же возможности нет, то кода придется написать чуть побольше
    $stmt = $mysqli->prepare("SELECT * FROM table WHERE name=? or name=?")
    $stmt->bind_param("ss", ...["Vasya", "Д'Артаньян"]);
    $stmt->execute();
    $rows = $stmt->fetch_all(MYSQLI_ASSOC);


    Но при этом всё равно никакой тебе возни с кавычками, слешами, real, escape, и прочей ерундой. Просто, быстро, лаконично и безопасно.
    Ответ написан
    4 комментария
  • Как определить что оператор разговаривает?

    @Drill
    Игорь,
    В случае с AMI, если я это буду делать в PHP мой скрипт захлебнётся от потока информации

    В случае с AMI при аутентификации надо указать Events: off, и никто тогда не захлебнется, астериск вообще будет нем, как рыба...
    Action: Login
    ActionID: 1
    Username: ВАШ_ЛОГИН
    Secret: ВАШ_ПАРОЛЬ
    Events: off


    а затем достаточно послать одну команду :
    Action: Command
    Command: core show hints


    В ответ получите пару десятков строк (или сколько там у вас пиров) такого вида :
    240@ext-local           : SIP/240,CustomPresen  State:Idle            Watchers  0
    241@ext-local           : SIP/241,CustomPresen  State:InUse           Watchers  0
    242@ext-local           : SIP/242,CustomPresen  State:Unavailable     Watchers  0


    Осталось распарсить два поля:
    1. в первом номер пира (оператора) - например 241
    2. в третьем поле его состояние - InUse (занят)
    Ответ написан
    2 комментария
  • Как сайту на кириллическом домене отправлять почту?

    ValdikSS
    @ValdikSS
    Чрезвычайно странные ответы других пользователей.
    Почта на кириллическом домене работает без особых проблем, это с адресом до собаки будут проблемы, поэтому его следует оставлять на латинице.
    Вот ответ на этот вопрос от разработчика почты из mail.ru:
    Может ли быть такое имя домена или под домена или почты?
    Ответ написан
    Комментировать
  • Как определившийся город передать в переменную?

    @AnonimusUser
    $.ajax({
      method: "POST",
      url: "some.php",
      data: { city: geolocation.city }
    })


    $_SESSION['city'] = $_POST['city']
    Ответ написан
    Комментировать
  • Bootstrap-Vue - В чём фишка данного симбиоза?

    copist
    @copist
    Empower people to give
    Расскажите плиз о технологии, и чем развёрнутей, тем лучше.

    Вот захотел ты сделать сайт SPA или PWA с любимой тебе вёрсткой на базе Twitter Bootstrap и любимой библиотеки Vue. Сверстал. Поповеры не появляются, дропдауны не выпадают, модалки не открыватся, формы не валидируются, клики не работают.

    Оригинальный Twitter Bootstrap имеет поддержку интерактивных элементов на Javascript. Реализовано это на библиотеке jQuery. Если делаешь на Vue, придётся подключать ещё и jQuery, что лишняя библиотека на 100+ килобайт, что, конечно, не катастрофа (пока ты не на мобилке).

    Vue работает с состояниями привязывает данные к отображению, а jQuery работает с DOM и событиями. Это вопрос производительности. Работа JQuery начитается когда загружен и распарсен JS и HTML. Работа Vue начинается в тот момент, когда загружен и распарсен JS, то есть чуть раньше. jQuery модифицирует DOM на лету, перестраивая текущий документ. Vue работает с shadow DOM, а затем подсовывает уже готовую интерактивную страницу в пустой документ, что быстрее (разница в секунды на десктопе, десятки секунд на м...).

    Vue реализует компонентную парадигму. Куски страницы являются изолированными кусочками кода (HTML CSS JS), которые цепляются между собой динамически, а обмениваются данными через аттрибуты и события. Предположим, что вы решили следовать компонентной парадигме, тогда согласно вот такому примеру нужно будет увязать самостоятельно все интерактивные компоненты. Компонента-кнопка. Компонента-поле ввода. Компонента-форма. Компонента-контейнер. Получается около 50 компонент. Для некоторых надо будет написать логику на jQuery. Если посмотреть на код jQuery этих микрокомпонент, то он окажется несложный, его вполне можно переписать на Vue. Ну там класс заменить или клик отработать. Когда от кода jQuery не останется следа, его можно будет из проекта удалить.

    И вот получается Bootstrap-Vue

    На компоненты побили. От Jquery избавились. Написано в единой парадигме. Работает быстрее.

    Добавляем тот факт, что в Vue можно не импортировать компоненты, которые не нужны (например, я не работаю с дропдаунами и модальным окнами) и код становится меньше, грузится быстрее, работает быстрее.

    Так же будет Не лишним оценить технологию: плюсы, минусы, стоит ли вообще с этим работать ...

    Это сам изучай и сравнивай. Навыки и опыт воздушно-капельным и через Internet не передаётся
    Ответ написан
    4 комментария
  • Формат обмена данными о заказах

    Vorchun
    @Vorchun
    silenzushka вам для чего надо? Вы свою систему пишете или у вас просто сайт? Если сайт, то: а) есть ли у клиента 1С или что-то другое б) что за движок — возможно все уже написано?

    Формат имеет хождение в России. В нашем случае, у 90% клиентов 1С, а мы работаем с Bitrix и UMI. Т.ч. вопроса не стоит.

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

    Все зависит от задач.
    Ответ написан
    2 комментария
  • Кто подскажет js-библиотеку для работы слайдера?

    @thereal_kh
    Более менее опытный фронт-энд разработчик.
    Ответ написан
    Комментировать
  • Как вызвать отрисовку корзины в новом шаблоне битрикса?

    @dormadekhin Автор вопроса
    Связался с тех поддержкой битрикса, как оказалось этот файла остался в результате некорректного обновления шаблона, и его там не должно быть,
    так же поинтересовался как обновить содержимое корзины, ответ следующий
    BX.Sale.BasketComponent.sendRequest('refreshAjax', {fullRecalculation: 'Y'});
    Ответ написан
    Комментировать
  • Как выполнить SQL-запрос из Google Sheets к БД MySQL?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    первый тут

    а второй вообще не вопрос - API у таблиц есть и это общеизвестно
    Ответ написан
    Комментировать
  • Настройка Visual Studio Code?

    tomnolane
    @tomnolane
    профессиональный разработчик
    самые основные:
    Auto Close Tag - авто закрытие тегов
    Auto Rename Tag - переименование парных тегов
    Beautify - разжатие кода (из minify в стандартный вид)
    highlight-mathing-tag - подсвечивание парных тегов (нужно настроить в конфиге, чтобы поярче было)
    html snippets - сниппеты как в сублайме
    insert <br> tag - вставка тега новой строки через шифт+enter
    PHP Debug - деббагер для php (нужно настраивать)
    Debugger for Chrome - JS дебаггер
    vscode-icons - иконки для VSC
    minify - сжатие кода
    css auto prefix - автопрефиксы
    Insert Numbers - полезное расширения для вставки чисел определенного формата во множество мест с инкрементом
    ================
    ещё некоторые, которые я добавил и пользуюсь:
    apache Conf (для подсветки .htaccess)
    AutoFileName - дополнение пути (например для "requere" в node.js)
    Bookmarks - делать закладки в коде
    Bracket Pair Colorizer - подсвечивать парные скобки (квадратные, фигурные, прямоугольные, круглые) очень удобно
    gitignore - добавляет .gitignore файл под проект (node.js, docker, yii2, laravel и т.д.)
    GitLens — Git supercharged - показывает гит-коммиты в коде (и автора коммита, удобно в командной разработке)
    HTML Class Suggestions
    Live Server - открывает браузер, где в режиме "онлайн" видишь изменения в html
    Markdown Preview Enhanced - тоже самое, что и Live Server, но только для страниц с markdown разметкой
    Material Icon Theme - для красоты VSC)
    Monokai Dark Soda - моя любимая тема разработки
    MySQL Syntax - для подсветки синтаксиса sql
    PHP Intellisense -
    Quick gitignore - добавляет файл/директорию в gitgnore
    Regex Previewer - помогает в регуляркой
    SQL Server (mssql) - для работы с sql server
    SVG Viewer - просматривать SVG картинки
    Todo Tree - делать заметки, удобно
    Remote FS - для удаленного подключения по FTP (удобно, если несколько серверов), пример конфига:
    { 
        "remotefs.remote": {"site": {
            "scheme": "ftp",
            "host": "1************01",
            "username": "ad**********ain",
            "password": "Lv************xF",
            "rootPath": "/"
          },
          "site2": {
            "scheme": "ftp",
            "host": "17**********1",
            "username": "a*****************m",
            "password": "************O",
            "rootPath": "/"
          },
          "moy-yandex": {
            "scheme": "ftp",
            "host": "a***********u",
            "username": "a***************mone",
            "password": "1***************W",
            "rootPath": "/"
          }
      }


    UPD
    Есть ещё хорошее приложение: Gremlins. Он подсвечивает невидимые символы в коде. Но его нужно немного "допилить", чтобы показывал невидимый символ юникод u+feff (образуется часто, когда кодировка страницы UTF-8 with BOM)
    собственной как допилить я сам же описываю в своем вопросе: тут

    что касается сннипетов для php: бывает такое, что они не срабатывают и тут две причины: пользователь достаточно быстро жмет TAB (VSC не успевает ещё понять, что пользователь закончил ввод) и когда достаточно долго работаешь в VSC без перезагрузки последнего.

    ИМХО: рано или поздно эта проблема решиться. VSC стремительно развивается и такая проблема будет решена (до этого чтобы быстрее было - лучше написать сюда об этом)
    Согласен с Artem , с тем, что Brackets имеет некоторые вещи лучше и оптимизированнее, чем VSC, и я для Front-end чаще работаю в Brackets (в большей части из-за возможности видеть online изменения тут же в браузере). Но главный минус Brackets от VSC - при большой кол-во плагинов он очень-очень тупит, также мне не нравится работа Brackets-ftp.
    Послесловие:
    VSC ещё учится и становится лучше. Рано или поздно он обгонит и Sublime, Atom и другие IDE - это вопрос времени, потому что: 1) он open source 2) финансирует и ведет разработку Microsoft 3) бесплатен!!! и последнее камень в огород всем крупным IDE
    Ответ написан
    2 комментария
  • Как рабоать с Tabler?

    @trofimovdev
    Python
    В описании же написано, что это UI Kit. То есть сборник полезных, часто используемых элементов. Открываете код, копируете HTML и стили и вставляете к себе :)
    Ответ написан
    2 комментария
  • Как сделать ячейки таблицы одинаковыми по ширине?

    e_s_l
    @e_s_l
    Full-stack web developer
    table {
      table-layout: fixed;
      width: 100%;
    }
    td, th {
      width: 2%;
    }
    Ответ написан
    3 комментария
  • Взлом или развод?

    Возможность получить информацию о таблицах бд является уязвимостью?
    Может ли злоумышленник, получив данные о списках таблиц так же получить и содержимое этих таблиц?

    1. Да
    2. Да
    Ответ написан
    Комментировать